codeworld-api 0.3.1 → 0.4.0
raw patch · 76 files changed
+5248/−3088 lines, 76 filesdep +HUnitdep +aesondep +base64-bytestringdep −random-shuffledep ~basedep ~blank-canvasPVP ok
version bump matches the API change (PVP)
Dependencies added: HUnit, aeson, base64-bytestring, bytestring, deepseq, dependent-sum, monad-loops, ref-tf, reflex, template-haskell, test-framework, test-framework-hunit
Dependencies removed: random-shuffle
Dependency ranges changed: base, blank-canvas
API changes (from Hackage documentation)
- CodeWorld: pattern Black :: Color
- CodeWorld: pattern Blue :: Color
- CodeWorld: pattern Brown :: Color
- CodeWorld: pattern Gray :: Color
- CodeWorld: pattern Green :: Color
- CodeWorld: pattern Grey :: Color
- CodeWorld: pattern Orange :: Color
- CodeWorld: pattern Pink :: Color
- CodeWorld: pattern Purple :: Color
- CodeWorld: pattern Red :: Color
- CodeWorld: pattern White :: Color
- CodeWorld: pattern Yellow :: Color
+ CodeWorld: TextEntry :: !Text -> Event
+ CodeWorld.Reflex: (&) :: HasCallStack => Picture -> Picture -> Picture
+ CodeWorld.Reflex: (<>) :: Semigroup a => a -> a -> a
+ CodeWorld.Reflex: Bold :: TextStyle
+ CodeWorld.Reflex: Fancy :: Font
+ CodeWorld.Reflex: Handwriting :: Font
+ CodeWorld.Reflex: Italic :: TextStyle
+ CodeWorld.Reflex: Monospace :: Font
+ CodeWorld.Reflex: NamedFont :: !Text -> Font
+ CodeWorld.Reflex: Plain :: TextStyle
+ CodeWorld.Reflex: RGBA :: !Double -> !Double -> !Double -> !Double -> Color
+ CodeWorld.Reflex: SansSerif :: Font
+ CodeWorld.Reflex: Serif :: Font
+ CodeWorld.Reflex: alpha :: Color -> Double
+ CodeWorld.Reflex: arc :: HasCallStack => Double -> Double -> Double -> Picture
+ CodeWorld.Reflex: assortedColors :: [Color]
+ CodeWorld.Reflex: black :: Color
+ CodeWorld.Reflex: blank :: HasCallStack => Picture
+ CodeWorld.Reflex: blue :: Color
+ CodeWorld.Reflex: bright :: Color -> Color
+ CodeWorld.Reflex: brighter :: Double -> Color -> Color
+ CodeWorld.Reflex: brown :: Color
+ CodeWorld.Reflex: circle :: HasCallStack => Double -> Picture
+ CodeWorld.Reflex: class (Reflex t, MonadHold t m, MonadFix m, PerformEvent t m, Adjustable t m, MonadIO (Performable m), PostBuild t m) => ReflexCodeWorld t m | m -> t
+ CodeWorld.Reflex: closedCurve :: HasCallStack => [Point] -> Picture
+ CodeWorld.Reflex: codeWorldLogo :: HasCallStack => Picture
+ CodeWorld.Reflex: colored :: HasCallStack => Color -> Picture -> Picture
+ CodeWorld.Reflex: coloured :: HasCallStack => Color -> Picture -> Picture
+ CodeWorld.Reflex: coordinatePlane :: HasCallStack => Picture
+ CodeWorld.Reflex: curve :: HasCallStack => [Point] -> Picture
+ CodeWorld.Reflex: dark :: Color -> Color
+ CodeWorld.Reflex: darker :: Double -> Color -> Color
+ CodeWorld.Reflex: data Color
+ CodeWorld.Reflex: data Font
+ CodeWorld.Reflex: data Picture
+ CodeWorld.Reflex: data ReactiveInput t
+ CodeWorld.Reflex: data TextStyle
+ CodeWorld.Reflex: debugReactiveOf :: (forall t m. ReflexCodeWorld t m => m ()) -> IO ()
+ CodeWorld.Reflex: dilated :: HasCallStack => Double -> Picture -> Picture
+ CodeWorld.Reflex: dilatedPoint :: Double -> Point -> Point
+ CodeWorld.Reflex: dotProduct :: Vector -> Vector -> Double
+ CodeWorld.Reflex: draw :: ReflexCodeWorld t m => Dynamic t Picture -> m ()
+ CodeWorld.Reflex: dull :: Color -> Color
+ CodeWorld.Reflex: duller :: Double -> Color -> Color
+ CodeWorld.Reflex: getKeyPress :: ReflexCodeWorld t m => m (Event t Text)
+ CodeWorld.Reflex: getKeyRelease :: ReflexCodeWorld t m => m (Event t Text)
+ CodeWorld.Reflex: getPointerClick :: ReflexCodeWorld t m => m (Event t Point)
+ CodeWorld.Reflex: getPointerPosition :: ReflexCodeWorld t m => m (Dynamic t Point)
+ CodeWorld.Reflex: getTextEntry :: ReflexCodeWorld t m => m (Event t Text)
+ CodeWorld.Reflex: getTimePassing :: ReflexCodeWorld t m => m (Event t Double)
+ CodeWorld.Reflex: gray :: Color
+ CodeWorld.Reflex: green :: Color
+ CodeWorld.Reflex: grey :: Color
+ CodeWorld.Reflex: hue :: Color -> Double
+ CodeWorld.Reflex: infixr 0 &
+ CodeWorld.Reflex: infixr 6 <>
+ CodeWorld.Reflex: isPointerDown :: ReflexCodeWorld t m => m (Dynamic t Bool)
+ CodeWorld.Reflex: keyPress :: ReactiveInput t -> Event t Text
+ CodeWorld.Reflex: keyRelease :: ReactiveInput t -> Event t Text
+ CodeWorld.Reflex: lettering :: HasCallStack => Text -> Picture
+ CodeWorld.Reflex: light :: Color -> Color
+ CodeWorld.Reflex: lighter :: Double -> Color -> Color
+ CodeWorld.Reflex: luminosity :: Color -> Double
+ CodeWorld.Reflex: mixed :: [Color] -> Color
+ CodeWorld.Reflex: orange :: Color
+ CodeWorld.Reflex: pattern HSL :: Double -> Double -> Double -> Color
+ CodeWorld.Reflex: pattern RGB :: Double -> Double -> Double -> Color
+ CodeWorld.Reflex: pictures :: HasCallStack => [Picture] -> Picture
+ CodeWorld.Reflex: pink :: Color
+ CodeWorld.Reflex: pointerDown :: ReactiveInput t -> Dynamic t Bool
+ CodeWorld.Reflex: pointerPosition :: ReactiveInput t -> Dynamic t Point
+ CodeWorld.Reflex: pointerPress :: ReactiveInput t -> Event t Point
+ CodeWorld.Reflex: pointerRelease :: ReactiveInput t -> Event t Point
+ CodeWorld.Reflex: polygon :: HasCallStack => [Point] -> Picture
+ CodeWorld.Reflex: polyline :: HasCallStack => [Point] -> Picture
+ CodeWorld.Reflex: purple :: Color
+ CodeWorld.Reflex: reactiveOf :: (forall t m. ReflexCodeWorld t m => m ()) -> IO ()
+ CodeWorld.Reflex: rectangle :: HasCallStack => Double -> Double -> Picture
+ CodeWorld.Reflex: red :: Color
+ CodeWorld.Reflex: reflexOf :: (forall t m. (Reflex t, MonadHold t m, MonadFix m, PerformEvent t m, MonadIO (Performable m), Adjustable t m, PostBuild t m) => ReactiveInput t -> m (Dynamic t Picture)) -> IO ()
+ CodeWorld.Reflex: rotated :: HasCallStack => Double -> Picture -> Picture
+ CodeWorld.Reflex: rotatedPoint :: Double -> Point -> Point
+ CodeWorld.Reflex: rotatedVector :: Double -> Vector -> Vector
+ CodeWorld.Reflex: saturation :: Color -> Double
+ CodeWorld.Reflex: scaled :: HasCallStack => Double -> Double -> Picture -> Picture
+ CodeWorld.Reflex: scaledPoint :: Double -> Double -> Point -> Point
+ CodeWorld.Reflex: scaledVector :: Double -> Vector -> Vector
+ CodeWorld.Reflex: sector :: HasCallStack => Double -> Double -> Double -> Picture
+ CodeWorld.Reflex: solidCircle :: HasCallStack => Double -> Picture
+ CodeWorld.Reflex: solidClosedCurve :: HasCallStack => [Point] -> Picture
+ CodeWorld.Reflex: solidPolygon :: HasCallStack => [Point] -> Picture
+ CodeWorld.Reflex: solidRectangle :: HasCallStack => Double -> Double -> Picture
+ CodeWorld.Reflex: styledLettering :: HasCallStack => TextStyle -> Font -> Text -> Picture
+ CodeWorld.Reflex: textEntry :: ReactiveInput t -> Event t Text
+ CodeWorld.Reflex: thickArc :: HasCallStack => Double -> Double -> Double -> Double -> Picture
+ CodeWorld.Reflex: thickCircle :: HasCallStack => Double -> Double -> Picture
+ CodeWorld.Reflex: thickClosedCurve :: HasCallStack => Double -> [Point] -> Picture
+ CodeWorld.Reflex: thickCurve :: HasCallStack => Double -> [Point] -> Picture
+ CodeWorld.Reflex: thickPolygon :: HasCallStack => Double -> [Point] -> Picture
+ CodeWorld.Reflex: thickPolyline :: HasCallStack => Double -> [Point] -> Picture
+ CodeWorld.Reflex: thickRectangle :: HasCallStack => Double -> Double -> Double -> Picture
+ CodeWorld.Reflex: timePassing :: ReactiveInput t -> Event t Double
+ CodeWorld.Reflex: translated :: HasCallStack => Double -> Double -> Picture -> Picture
+ CodeWorld.Reflex: translatedPoint :: Double -> Double -> Point -> Point
+ CodeWorld.Reflex: translucent :: Color -> Color
+ CodeWorld.Reflex: type Colour = Color
+ CodeWorld.Reflex: type Point = (Double, Double)
+ CodeWorld.Reflex: type Vector = (Double, Double)
+ CodeWorld.Reflex: vectorDifference :: Vector -> Vector -> Vector
+ CodeWorld.Reflex: vectorDirection :: Vector -> Double
+ CodeWorld.Reflex: vectorLength :: Vector -> Double
+ CodeWorld.Reflex: vectorSum :: Vector -> Vector -> Vector
+ CodeWorld.Reflex: white :: Color
+ CodeWorld.Reflex: yellow :: Color
+ CodeWorld.Sketches: sketchedAirplane :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedAlien :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedApple :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedAstronaut :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedBaby :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedBall :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedBalloon :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedBell :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedBird :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedBlock :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedBoat :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedBook :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedBoy :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedBubble :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedBug :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedCar :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedCat :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedChatBubble :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedChest :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedClock :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedCloud :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedCoin :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedDog :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedDragon :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedExplosion :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedFish :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedFlag :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedFlame :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedFlower :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedGear :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedGhost :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedGirl :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedGrass :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedHeart :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedHotAirBalloon :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedHouse :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedJewel :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedKey :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedLightBulb :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedLightning :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedMonster :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedMoon :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedNote :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedPawnBlack :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedPawnBlue :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedPawnGreen :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedPawnRed :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedPawnWhite :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedRaindrop :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedRobot :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedRocket :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedScroll :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedSign :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedSparkle :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedStar :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedSun :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedThoughtBubble :: HasCallStack => Picture
+ CodeWorld.Sketches: sketchedTree :: HasCallStack => Picture
Files
- codeworld-api.cabal +91/−13
- data/AirplaneTransparency70.svg +1/−0
- data/AlarmTransparency70.svg +1/−0
- data/AlienTransparency70.svg +1/−0
- data/AppleTransparency70.svg +1/−0
- data/AustronautTransparency70.svg +1/−0
- data/BabyTransparency70.svg +1/−0
- data/BallTransparency70.svg +1/−0
- data/BalloonTransparency70.svg +1/−0
- data/BellTransparency70.svg +1/−0
- data/BirdTransparency70.svg +1/−0
- data/BoatTransparency70.svg +1/−0
- data/BookTransparency70.svg +1/−0
- data/BoyTransparency70.svg +1/−0
- data/BubbleTransparency70.svg +1/−0
- data/BugTransparency70.svg +1/−0
- data/CarTransparency70.svg +1/−0
- data/ChatBubbleTransparency70.svg +1/−0
- data/ChestTransparency70.svg +1/−0
- data/CloudTransparency70.svg +1/−0
- data/CoinTransparency70.svg +1/−0
- data/DogTransparency70.svg +1/−0
- data/DragonTransparency70.svg +1/−0
- data/ExplosionTransparency70.svg +1/−0
- data/FishTransparency70.svg +1/−0
- data/FlagTransparency70.svg +1/−0
- data/FlameTransparency70.svg +1/−0
- data/FlowerTransparency70.svg +1/−0
- data/GearTransparency70.svg +1/−0
- data/GhostTransparency70.svg +1/−0
- data/GirlTransparency70.svg +1/−0
- data/GrassTransparency70.svg +1/−0
- data/HeartTransparency70.svg +1/−0
- data/HotAirBalloonTransparency70.svg +1/−0
- data/HouseTransparency70.svg +1/−0
- data/JewelTransparency70.svg +1/−0
- data/KeyTransparency70.svg +1/−0
- data/KittenTransparency70.svg +1/−0
- data/LightbulbTransparency70.svg +1/−0
- data/LightningTransparency70.svg +1/−0
- data/MonsterTransparency70.svg +1/−0
- data/MoonTransparency70.svg +1/−0
- data/NoteTransparency70.svg +1/−0
- data/PawnBlackTransparency70.svg +1/−0
- data/PawnBlueTransparency70.svg +1/−0
- data/PawnGreenTransparency70.svg +1/−0
- data/PawnRedTransparency70.svg +1/−0
- data/PawnWhiteTransparency70.svg +1/−0
- data/README.md +2/−0
- data/RaindropTransparency70.svg +1/−0
- data/RobotTransparency70.svg +1/−0
- data/RocketShipTransparency70.svg +1/−0
- data/ScrollTransparency70.svg +1/−0
- data/SignTransparency70.svg +1/−0
- data/SparklesTransparency70.svg +1/−0
- data/StarTransparency70.svg +1/−0
- data/SunTransparency70.svg +1/−0
- data/ThoughtBubbleTransparency70.svg +1/−0
- data/ToyCubeTransparency70.svg +1/−0
- data/TreeTransparency70.svg +1/−0
- data/codeworld.svg +1/−0
- src/CodeWorld.hs +114/−122
- src/CodeWorld/App.hs +44/−44
- src/CodeWorld/App2.hs +46/−40
- src/CodeWorld/CanvasM.hs +192/−87
- src/CodeWorld/CollaborationUI.hs +114/−99
- src/CodeWorld/Color.hs +131/−133
- src/CodeWorld/DrawState.hs +87/−0
- src/CodeWorld/Driver.hs +2049/−2412
- src/CodeWorld/EntryPoints.hs +936/−0
- src/CodeWorld/Event.hs +42/−42
- src/CodeWorld/Picture.hs +86/−96
- src/CodeWorld/Reflex.hs +620/−0
- src/CodeWorld/Sketches.hs +546/−0
- src/Util/EmbedAsUrl.hs +43/−0
- test/Main.hs +46/−0
codeworld-api.cabal view
@@ -1,5 +1,5 @@ Name: codeworld-api-Version: 0.3.1+Version: 0.4.0 Synopsis: Graphics library for CodeWorld License: Apache License-file: LICENSE@@ -19,32 +19,110 @@ package to provide a webpage consisting of just a panel locally. This way, the same program that runs on the CodeWorld server can also be run locally. +Extra-source-files: data/README.md,+ data/*.svg++Flag strictbuild+ Description: Fail on warnings+ Default: False+ Manual: True+ Library+ Exposed: True Hs-source-dirs: src Exposed-modules: CodeWorld, CodeWorld.App,- CodeWorld.App2+ CodeWorld.App2,+ CodeWorld.Reflex,+ CodeWorld.Sketches Other-modules: CodeWorld.CanvasM,+ CodeWorld.CollaborationUI, CodeWorld.Color,- CodeWorld.Picture,+ CodeWorld.DrawState,+ CodeWorld.Driver,+ CodeWorld.EntryPoints, CodeWorld.Event,- CodeWorld.Driver- CodeWorld.CollaborationUI- Build-depends: base >= 4.9 && < 5,+ CodeWorld.Picture,+ Util.EmbedAsUrl+ Build-depends: aeson >= 1.4.3 && < 1.5,+ base >= 4.11 && < 5,+ base64-bytestring >= 1.0 && < 1.1,+ bytestring >= 0.9 && < 0.11,+ cereal >= 0.5.4 && < 0.6,+ cereal-text >= 0.1.0 && < 0.2, containers >= 0.5.7 && < 0.7,+ deepseq >= 1.4 && < 1.5,+ dependent-sum >= 0.4 && < 0.6.2,+ ghc-prim >= 0.3.1 && < 0.6, hashable >= 1.2.4 && < 1.3,- text >= 1.2.2 && < 1.3,+ monad-loops >= 0.3 && < 0.5, mtl >= 2.2.1 && < 2.3, random >= 1.1 && < 1.2,- random-shuffle >= 0.0.4 && < 0.1,+ ref-tf >= 0.4 && < 0.5,+ reflex >= 0.6.2.3 && < 0.7,+ template-haskell >= 2.8 && < 2.15,+ text >= 1.2.2 && < 1.3++ if impl(ghcjs)+ Js-sources: jsbits/sim_fp.js+ Build-depends: ghcjs-base,+ ghcjs-prim,+ codeworld-game-api,+ codeworld-prediction,+ ghcjs-dom >= 0.8 && < 0.9,+ transformers+ else+ Build-depends: blank-canvas >= 0.6 && < 0.8,+ time >= 1.6.0 && < 1.9++ Ghc-options: -O2 -Wall+ if flag(strictbuild)+ Ghc-options: -Werror++Test-suite unit-tests+ Type: exitcode-stdio-1.0+ Main-is: Main.hs+ Hs-source-dirs: test,+ src+ Other-modules: CodeWorld,+ CodeWorld.CanvasM,+ CodeWorld.CollaborationUI,+ CodeWorld.Color,+ CodeWorld.DrawState,+ CodeWorld.Driver,+ CodeWorld.EntryPoints,+ CodeWorld.Event,+ CodeWorld.Picture,+ Util.EmbedAsUrl++ -- Test libraries+ Build-depends: HUnit,+ test-framework,+ test-framework-hunit++ -- Copy of the build dependencies above+ Build-depends: aeson >= 1.4.3 && < 1.5,+ base >= 4.11 && < 5,+ base64-bytestring >= 1.0 && < 1.1,+ bytestring >= 0.9 && < 0.11, cereal >= 0.5.4 && < 0.6, cereal-text >= 0.1.0 && < 0.2,- ghc-prim >= 0.3.1 && < 0.6+ containers >= 0.5.7 && < 0.7,+ deepseq >= 1.4 && < 1.5,+ dependent-sum >= 0.4 && < 0.6.2,+ ghc-prim >= 0.3.1 && < 0.6,+ hashable >= 1.2.4 && < 1.3,+ monad-loops >= 0.3 && < 0.5,+ mtl >= 2.2.1 && < 2.3,+ random >= 1.1 && < 1.2,+ ref-tf >= 0.4 && < 0.5,+ reflex >= 0.6 && < 0.7,+ template-haskell >= 2.8 && < 2.15,+ text >= 1.2.2 && < 1.3 if impl(ghcjs) Js-sources: jsbits/sim_fp.js- Build-depends:- ghcjs-base,+ Build-depends: ghcjs-base, ghcjs-prim, codeworld-game-api, codeworld-prediction,@@ -54,5 +132,5 @@ Build-depends: blank-canvas >= 0.6 && < 0.7, time >= 1.6.0 && < 1.9 - Exposed: True- Ghc-options: -Wincomplete-patterns+ Ghc-options: -O2+ Cpp-options: -DCODEWORLD_UNIT_TEST
+ data/AirplaneTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0,.st4{opacity:.7;fill:#f3d02a}.st4{fill:#9e000f}</style><path class="st0" d="M815 426.5c-2-36.1 5.6-72.8 21.9-105.1 2.5-4.9 5-11.2 1.2-15.3-2.1-2.3-5.5-2.8-8.7-3-33.3-1.9-65.8 14.8-89 38.8-15.4 15.9-54.2 59.1-35 79.8 17.2 18.5 87 3.9 109.6 4.8z"/><path d="M813.3 371.7l.6-.9c-.1.1-.6.8-1.6 2.2.1-.1.2-.2.2-.3.3-.3.5-.6.8-1z" fill="#aa222e"/><path d="M811.7 477.1c14.3-14.1 14.7-39.4 2-54.6-5 2.3-10.3 4-15.7 4.8-16.2 2.4-32.6 1.1-48.5-2.2-13.6-2.7-29.8-8-36.6-21.2-1.2-2.4-2.2-4.8-3-7.2-.5-1.4-2.2-1.9-3.4-1-16.1 13.1-37.3 19.1-58 19.4-58.9.7-89.5-5.9-149-5-29.8.5-99.5-21.5-126 3.9-.1-.4-.1-.8-.2-1.1-13.9.1-74.5-4.8-83.3 4.8-10 11 8.2 37.7 11.3 50.4 2.5 10.7-5 132.2-23.2 121.9 19.7 11.2 42.5 16.9 65.1 16.3 3.2-.1 6.5-.3 9.1-2.2 2.8-2 4.1-5.3 5.3-8.5.6-1.6 1.1-3.2 1.7-4.8.5 5.3 2.3 10.3 6.1 14.4 6.9 7.5 18.1 8.9 28.2 9.7 41.9 3.2 84.1 3.7 126.1 1.7 28.2-1.4 59.8-9.9 86.2-4.8.7.1 1.5.3 2.2.5-.5-.9-.9-1.7-1.3-2.6-17.4-11.4-34.7-22.9-50.8-36.1-17-13.9-33.9-31.1-39.9-52.9-3.6-12.9 2.6-25.6 13.3-32.8 13.6-9.1 36.3-10.3 52.1-14 16-3.8 33.3-9.1 49.8-8.8 7.6.1 9.8-.7 17 1.6 9.9 3.1 17.5 8.3 25.5 14.6 12.7 10 23 23.2 32.1 36.5 7.2 10.6 13.6 22 18.2 34.1 22.8-10.5 50-24.3 67.9-39.9 7 18.2 53 22.6 62.6 5.6 9.6-17-23.6-43.8-42.9-40.5z" opacity=".7" fill="#cc1425"/><path class="st0" d="M362.2 401.6c-14.2-18.7-19.8-42.5-23.7-65.6-2.6-15.6-3.8-34.1 7.9-44.9 7.7-7 19-8.7 29.4-7.6 25.7 2.6 47.6 19 67.9 34.9 2 1.6 4.3 3.5 4.6 6 .4 2.9-1.8 5.4-3.9 7.5-13.7 14.3-27.5 28.6-41.2 42.9-6.4 6.6-13 13.4-21.7 16.6s-19.8 1.5-24.8-6.2"/><path d="M423.1 395.2c9.4-13.2 18.9-26.6 31.5-36.8s28.8-17 44.9-14.7c26.5 3.7 44.5 31.4 45.3 58.2-42.4 2-85.1-4-125.2-17.7m171.5 23.7c-6.3-5.4-8.9-14.7-6.4-22.6 13.3-.1 25.9 10.3 28.5 23.3" opacity=".7" fill="#acced4"/><path class="st4" d="M464.9 629.7c1.1 9.2 3.5 18.2 7 26.8-7.6 4.6-9.4 16.5-3.4 23.1 5.8-14.8 20.2-25.8 36-27.3.1-3.1.1-6.2.2-9.2-6.5-.5-13 .5-19.1 2.8-.4-7.5-.8-15-1.1-22.5-6.6.6-13.4-.5-19.4-3.3"/><path d="M508.2 652.7c-5.2 2.4-10.5 4.8-15.8 7.3-7 9.7-1.7 25.7 9.7 29.3 11.5 3.6 24.9-6.5 24.7-18.5-.2-12-14.1-21.6-25.4-17.5M341.5 612c-3.4 9.4 3.8 20.1 13.3 23.4s19.9.8 29-3.3c2.8-1.2 5.8-3 6.2-6 .6-3.7-2.9-6.6-6.1-8.4-10.4-5.7-22.3-8.5-34.1-8" fill="#454040" opacity=".7"/><path d="M215 472.7c16.7 4.7 26.9 25 20.8 41.2-2.1-5.2-10.7-3.9-13.4 1.1-2.6 4.9-1.2 11 .3 16.4 1.5 5.4 3 11.4.5 16.4-14.4-4.2-29.7-8.9-39.1-20.6s-8.5-32.6 5.2-38.5c7.3-3.1 16.7-1.6 22.4-7.1" opacity=".7" fill="#ffb300"/><path class="st4" d="M499.4 329.4c20.4 1 35 19.1 46.9 35.7 6.4 9 13 18.2 15.8 28.9 1.5 5.4.4 16.5 3.4 21.2 3 4.7 14.6 2 19.1-1.5 0-10.9-3.2-21.3-3.3-32.2 0-5.2 1.6-12.1 6.8-12.2 2.2 0 4.1 1.4 5.8 2.7 12.1 9.4 24.8 19.5 30.2 33.9 1.5 4-.2 10.7-4.2 9 4.6 3.3 10.8 4.1 16.1 2.3 1.3-13.3-6.1-25.8-14.5-36.2-25.9-32.4-63.8-54.9-104.6-62.1-6.3-1.1-12.8-1.9-19.1-1.2-21.7 2.4-130.4 93.1-81.2 76.2 19.5-18.9 50.4-66 82.8-64.5z"/><path d="M257.3 539.7c-3.1 5.8-7.1 11.3-8.3 17.7-2 10.6 5.2 22.1 15.6 25 18.6-27.4 55.5-134.3 17.5-161.2-30.6-21.7-23.9 21-21.4 37.5 4.3 28.1 11.2 54.1-3.4 81z" opacity=".7" fill="#f5d400"/><path d="M138.3 349.1c-4 2.9 40.5 83.3 49.6 89-9.4-30.7-20.4-61-30-91.8-6.5-2.2-14-1.1-19.6 2.8zm122 220.1l-15.9-35.7c-2.5 3.1-6 5.5-10.1 6.8-.2.1-.4.1-.7.2 16.3 45.1 32.6 90.3 48.8 135.4 2.8-9.9 14.4-16.3 24.3-13.5-18-29.6-32.2-61.4-46.4-93.2z" fill="#6bb9b6" opacity=".7"/><path d="M452 395.3c-.5-9.4 4.9-18.8 13.2-23.1 9.5 2 17.7 9.3 20.9 18.5 3.3-8.2 14.1-9.9 23-9.6 5.8.1 12 .7 16.2 4.6s4.4 12.3-.9 14.5c-2.2.9-4.7.5-7.1.1-24.1-4-48.2-7.9-72.4-11.8" opacity=".7" fill="#6998a1"/><path d="M225.6 475.1c-3.2-14.7 1.9-30.9 13.1-41 1.4-1.2 3-2.5 4.8-2.5 3.1 0 5.1 3.1 6.6 5.9 9.1 18.1 17.7 36.8 20.2 56.9s-1.8 41.9-15.7 56.5c-4.3-9.1-11.5-16.7-20.3-21.5 17.8-19 10.8-54.8-12.8-65.7" opacity=".7" fill="#006678"/><path d="M225.5 425.6c-6.2 17.9-9.6 36.6-10.3 55.5-.2 5.6 8.5 5.6 8.7 0 .7-18.2 4.1-36 10-53.2 1.8-5.3-6.6-7.5-8.4-2.3z"/><path d="M231.8 434.1c2.5-4.8 8.3-4.4 11.7-.5 3.7 4.2 6.2 10.1 8.6 15.1 5.3 10.5 9.3 21.7 11.8 33.2 5 22.6 3.3 46.4-6.5 67.5-2.4 5 5.1 9.5 7.5 4.4 9.2-19.8 12.2-41.5 9.3-63-1.5-11-4.3-21.7-8.2-32-3.9-10.1-8.6-20.7-15-29.5-6.6-9.2-21.2-10.1-26.8.6-2.5 4.8 5 9.2 7.6 4.2z"/><path d="M242.4 425.1c11.3-4.5 23.4-5.9 35.3-3.5 5.5 1.1 7.8-7.3 2.3-8.4-13.4-2.6-27.2-1.6-39.9 3.5-5.2 2-2.9 10.4 2.3 8.4z"/><path d="M271.9 417.2c22.8 38.9 27 87.2 12.8 129.9-4 12.2-9.6 23.7-16.6 34.5-3 4.7 4.5 9.1 7.5 4.4 25.8-39.8 32.5-90.9 19.5-136.4-3.7-12.9-9-25.2-15.7-36.8-2.8-4.8-10.3-.5-7.5 4.4zm-48.5 51.5c-13.4 2-26.4 6.7-37.8 13.8-10.7 6.6-18.2 16.6-14.6 29.7 3.3 11.9 13.1 21.6 22.8 28.8 9.9 7.3 21.4 12.4 33.4 14.8 5.5 1.1 7.8-7.3 2.3-8.4-10.2-2.1-19.9-6-28.5-11.9-8.4-5.7-17.2-13.7-20.9-23.4-1.8-4.7-2.1-9.8.7-14.1 2.9-4.5 7.9-7.4 12.4-10 10.1-5.7 21.1-9.3 32.5-11 5.6-.8 3.2-9.1-2.3-8.3z"/><path d="M225.8 478.5c8.3 1.6 13.4 9 14.9 17 2 10.6-2.4 21.6-6 31.3-1.9 5.3 6.5 7.5 8.4 2.3 4.4-12 9-25.1 5.6-37.9-2.6-9.9-10-19.1-20.5-21.1-5.6-1.1-8 7.3-2.4 8.4zm17-47.6c55.2-15.6 112-24.7 169.3-26.9 5.6-.2 5.6-8.9 0-8.7-58 2.2-115.7 11.3-171.6 27.2-5.4 1.5-3.1 9.9 2.3 8.4z"/><path d="M390.2 406.9c25-34.1 53.8-69.8 96-82.4 20.3-6 41.7-5.6 61.1 3.2 19.1 8.7 36 22.6 52.1 35.9 17.1 14.1 33.9 30.4 41 52 1.7 5.3 10.1 3 8.4-2.3-6.6-20.2-20.8-36.4-36.6-50.2-8.2-7.2-16.9-13.9-25.5-20.5-9-6.9-18.3-13.6-28.3-19-20.3-10.9-42.5-14.3-65.1-9.7-22.1 4.5-42.1 15.8-59.2 30.2-19.9 16.8-35.9 37.6-51.2 58.5-3.5 4.4 4 8.8 7.3 4.3z"/><path d="M429.5 392.4c8-9.6 16.4-18.8 25.3-27.5 8.1-8 16.8-16.6 27.6-20.9 20.8-8.2 42.2 5.4 53.8 22.2 7.4 10.7 12.3 22.8 16.7 35 1.9 5.2 10.3 3 8.4-2.3-8.3-22.7-18.9-46.9-41-59.2-10.1-5.6-21.9-8.3-33.4-6.1-12.1 2.3-22.2 10.2-31 18.3-11.6 10.6-22.4 22.2-32.5 34.3-3.6 4.3 2.6 10.5 6.1 6.2z"/><path d="M441.7 401.1c36.3 3.9 72.7 7.8 109 11.7 5.6.6 5.5-8.1 0-8.7-36.3-3.9-72.7-7.8-109-11.7-5.5-.6-5.5 8.1 0 8.7zm150.7 6.5c-1-10.2-3.5-20-7.5-29.4.2 1.1.3 2.2.4 3.4 1-2.3 6.2-.9 7.8-.4 3.8 1.2 7.5 3.6 10.7 5.9 7.3 5.1 13.2 12 17.6 19.8 2.7 4.9 10.2.5 7.5-4.4-4-7.2-9.4-13.8-15.8-19.1-5.7-4.7-12.6-9.6-19.9-11.1-5.8-1.2-14.7-.1-16.3 7-.5 2.2.8 4.1 1.5 6 1 2.5 1.8 5.1 2.5 7.6 1.3 4.8 2.3 9.7 2.7 14.7.7 5.5 9.4 5.6 8.8 0z"/><path class="st0" d="M566.7 566.5c19.7 16.4 39.5 30.2 58.7 47.1 25.7 22.7 49.7 52 82.5 62.5 7.9 2.5 16.7 3.8 24.3.5 9.8-4.2 15.3-15.2 15.9-25.8s6.3-27.3 2.6-37.2C733.9 569 702 533 674.3 494.1c-3.4-4.8-7.1-9.7-12.2-12.5-6.7-3.7-14.8-3.4-22.5-2.9-23.2 1.5-92.2-1.9-109.7 14.3-22.1 20.2 19.7 59.1 36.8 73.5z"/><path d="M592.9 412.2c9.6-1.3 19.2-1.1 28.7.8 5.5 1.1 7.8-7.3 2.3-8.4-10.3-2-20.7-2.5-31-1.1-2.3.3-4.3 1.8-4.3 4.4-.1 2 2 4.6 4.3 4.3z"/><path class="st0" d="M805 472c-5.2 6.2-14.3 6.7-21.8 9.7s-13.9 13.2-7.9 18.6c1.4 1.3 3.2 1.9 5 2.6 17.1 6.2 34.3 12.5 51.4 18.7 5.9 2.2 12.1 4.3 18.3 3.8s12.7-4.7 13.8-10.9c1.3-7.4-5.1-13.8-11.2-18.2-15.6-11.5-33-20.6-51.3-26.9"/><path d="M267.7 599.8c43.4 18.4 90.1 26 137 28.3 23.6 1.2 47.3 1.2 71 .7 20-.4 40-.8 59.9-2.1 20.3-1.3 41-2.6 60.9-6.9 5.5-1.2 3.2-9.5-2.3-8.4-17.1 3.6-34.8 4.9-52.2 6.1-18.8 1.3-37.6 1.8-56.5 2.3-46.2 1.1-92.9 1.1-138.6-6.5-25.6-4.3-50.9-11-74.8-21.2-2.2-.9-4.6-.6-6 1.6-1.1 2-.6 5.2 1.6 6.1zm232.8-82.7c49.3 49.8 100.9 97.3 154.5 142.3 7.4 6.2 14.8 12.3 22.2 18.4 5.6 4.6 13.9 13.3 21.3 6.8 4.2-3.7-2-9.9-6.2-6.2-1 .9-15.8-12.4-17.5-13.7-6.3-5.2-12.7-10.5-19-15.8-12.6-10.6-25.1-21.4-37.4-32.3-24.5-21.7-48.6-43.8-72.2-66.5-13.4-12.8-26.6-25.9-39.6-39-3.9-4.1-10.1 2-6.1 6z"/><path d="M555.2 494.9c14.2-2.9 28.5-5.9 42.7-8.8 7-1.4 14-2.9 21-4.3 6.8-1.4 13.7-3.3 20.6-3.7 13.6-.8 22.8 8.7 31.7 17.7 8.8 8.8 16.8 18.4 24.1 28.4 14.9 20.3 27.4 42.3 39.5 64.3 11.4 20.7 26.6 44.4 20.2 69.1-3 11.7-10.9 21.2-22.8 24.3-12.7 3.3-26.5-.3-38.1-5.5-5.1-2.3-9.5 5.2-4.4 7.5 22.1 10 51.5 13.3 67.1-9.3 15.6-22.6 6.5-51-5-73.1-12.7-24.4-26.4-48.8-41.9-71.6-7.6-11.2-15.9-22.1-25-32.2-8.5-9.4-18.2-20.7-30-25.8-7.7-3.3-15.9-2.9-24-1.5-8.6 1.5-17.1 3.5-25.6 5.2l-52.5 10.8c-5.4 1.2-3.1 9.6 2.4 8.5zM360 399.2c-11-14.8-19.2-31.5-24-49.3-4-15-6.2-31.4-1.4-46.4 5-15.5 18.4-23.8 34.5-23.4 17.3.5 34.5 8.2 49.7 16 18.3 9.4 35.1 21.4 49.9 35.6 4 3.9 10.2-2.3 6.1-6.1-14.5-13.8-30.8-25.8-48.4-35.2-16.6-8.9-35-17.1-53.9-18.7-17.8-1.5-35.2 5.7-43.3 22.2-7.3 14.8-7.1 32.2-4 48.1 4.3 22.2 13.8 43.4 27.3 61.6 3.3 4.5 10.8.1 7.5-4.4zm-227-43.6L189.4 466c2.6 5 10.1.6 7.5-4.4l-56.4-110.4c-2.6-5-10.1-.6-7.5 4.4z"/><path d="M142.7 360.3c3.1-6.3 7.9-10.9 14.3-13.9-2-.5-4-1-5.9-1.6 20.3 44 39.7 88.4 58.1 133.2 2.1 5.1 10.5 2.9 8.4-2.3-18.7-45.5-38.3-90.7-59-135.3-1.1-2.3-4-2.5-5.9-1.6-7.5 3.5-13.7 9.6-17.4 17-2.6 5.1 4.9 9.5 7.4 4.5zm80.5 181.6c10.1 24.9 20.2 49.8 30.2 74.7 5 12.5 10.1 24.9 15.1 37.3 5 12.3 9.4 25.1 15 37.1 1.2 2.5 3.1 4.6 6 5 2.6.3 5-1.2 5.7-3.7 1.5-5.3-4.3-9.2-8.4-5.7-4.3 3.6 1.9 9.7 6.1 6.2l.3-.3c-1.4.4-2.8.8-4.2 1.1 5.7.8 1.4-8.3.8-9.9-.5-1.3-1.1-2.7-1.6-4-1.3-3.1-2.5-6.2-3.8-9.3-2.5-6.2-5-12.5-7.6-18.7-5-12.5-10.1-24.9-15.1-37.3-10.1-24.9-20.2-49.8-30.2-74.7-2-5.2-10.4-3-8.3 2.2zm6.9-25.6c27.8 53.3 55.5 106.6 83.3 159.9 2.6 5 10.1.6 7.5-4.4-27.8-53.3-55.5-106.6-83.3-159.9-2.5-5-10.1-.6-7.5 4.4z"/><path d="M278.1 681.9c11.7 11 32.8 5.4 37.5-10 1.6-5.4-6.7-7.7-8.4-2.3-2.8 9-16.1 12.6-23 6.1-4-3.7-10.1 2.4-6.1 6.2zm364.3-270.3c12.8-1.4 25.8-1.2 38.6.9 5.5.9 7.8-7.5 2.3-8.4-13.6-2.2-27.2-2.7-40.9-1.2-5.5.6-5.6 9.3 0 8.7zm50.8 14.4c7.8-14.6 15.6-29.3 23.4-43.9 7.2-13.5 13.9-27.7 22.4-40.5 7.3-11 16.8-19.5 28.7-25.3 11.1-5.3 23.4-8 35.6-9.4 14.3-1.6 28.8-1.5 43.1-1.2 5.6.1 5.6-8.6 0-8.7-25.9-.5-53.4-.6-77.7 9.5-12.2 5-23.1 12.6-31.4 22.9-9.8 12.1-16.5 26.4-23.8 40.1-9.3 17.4-18.5 34.8-27.8 52.2-2.6 4.9 4.9 9.3 7.5 4.3z"/><path d="M841.2 303.6c3 9.2 0 18.5-3.8 27s-8 16.9-11.6 25.5c-7.3 17.8-12.6 36.3-16 55.2-1 5.5 7.4 7.8 8.4 2.3 3.5-19.8 9.2-39.2 17-57.7 7.1-16.9 20.5-35.5 14.4-54.6-1.7-5.3-10.1-3-8.4 2.3zm-47.6 163.9a295.2 295.2 0 0 1 37.5 18.3c5.8 3.3 11.5 6.8 16.9 10.6 4.6 3.2 9.2 6.9 12 11.8 4.6 8 1.6 21.4-9.7 19-7-1.5-14-4.6-20.8-6.9-7-2.4-14.1-4.8-21.1-7.2-7.4-2.5-14.9-5-22.3-7.6-6.5-2.3-12.7-5.1-17.3-10.3-3.7-4.2-9.8 2-6.2 6.1 9.8 11.1 26.6 14.4 40.1 19 8.4 2.9 16.8 5.7 25.2 8.6 7.6 2.6 15.8 6.5 23.8 7.2 12.9 1.2 20.6-11.8 19-23.4-1.9-13.8-15.3-22.2-26-28.9-15.5-9.7-31.8-17.9-48.7-24.7-5.3-2.1-7.5 6.4-2.4 8.4z"/><path d="M762.7 495.4c7.4-5.8 16-9.6 25.1-11.8 5.4-1.3 3.1-9.7-2.3-8.4-10.7 2.5-20.3 7.3-29 14-1.9 1.5-1.5 4.6 0 6.1 1.9 1.9 4.4 1.5 6.2.1zm50.6-66.2c8.5.1 14.5 8.9 14.8 16.8.4 10.6-6.5 20-13.4 27.3-3.8 4.1 2.3 10.2 6.2 6.1 9.1-9.8 17.6-22.5 15.6-36.5-1.7-11.7-10.9-22.4-23.2-22.5-5.6 0-5.6 8.7 0 8.8zm-86.1 137.5c27.1-11 52.7-25.2 76.1-42.8 4.4-3.3.1-10.9-4.4-7.5-22.8 17-47.7 31.2-74 41.9-5.1 2.1-2.9 10.5 2.3 8.4zm-15.9-74.4c12.3-2.7 24.7-5.3 37-8 5.5-1.2 3.2-9.6-2.3-8.4-12.3 2.7-24.7 5.3-37 8-5.5 1.2-3.2 9.5 2.3 8.4zm-249.4-99.4c-1.4-7.8 5.4-16.3 13.4-16.5 8-.1 15 8.4 13.7 16.2-.9 5.5 7.5 7.8 8.4 2.3 2.2-13.3-8.1-27.3-22.1-27.2-14 .1-24.2 14.2-21.8 27.5 1 5.5 9.4 3.2 8.4-2.3z"/><path d="M500.9 397.6c1.5-6.7 7.6-12.1 14.6-11.9 6.7.2 13 5.9 13.8 12.6.7 5.5 9.4 5.5 8.7 0-1.4-11.2-10-20.4-21.5-21.3-11.1-.9-21.6 7.6-24 18.2-1.2 5.5 7.2 7.8 8.4 2.4zm-35.3 224.8c-7 10.5-8.5 24-3.8 35.7 2.1 5.1 10.5 2.9 8.4-2.3-3.9-9.7-3-20.3 2.9-29 3.2-4.7-4.4-9-7.5-4.4zm19.5 4.4c-3.1 4.7-3.9 10.4-2.5 15.8s9.8 3.1 8.4-2.3c-.9-3.3-.2-6.3 1.6-9.1 3.1-4.7-4.4-9-7.5-4.4z"/><path d="M484.5 644.3c4.1 1.8 7.6 1.2 11.6-.6 1.5-.7 3-1.9 4.6-2.2.6-.1 1.2.1 1.7 0 1.8-.3-.1 2.1.4-1.1-.9 5.5 7.5 7.8 8.4 2.3.8-5.1-2.3-8.8-7.3-9.7-2.4-.4-4.8-.2-7.1.7-1.9.7-6 4.1-8 3.2-5-2.4-9.4 5.1-4.3 7.4zm-20.2 12.1c-7.9 8.3-1.3 24.1 10.5 23.5 5.6-.3 5.6-9 0-8.7-3.9.2-7.2-5.6-4.3-8.6 3.8-4.1-2.4-10.3-6.2-6.2z"/><path d="M487 680.1c3.7-10.9 11.7-19.6 21.9-24.7 5-2.5.6-10-4.4-7.5-12.3 6.1-21.5 16.9-25.9 29.8-1.8 5.4 6.6 7.7 8.4 2.4z"/><path d="M510.9 659.3c3.7-2.1 8.1.4 10.2 3.7 2.8 4.3 1 9.9-1.7 13.8-4.8 6.7-17.7 14.4-24.5 6.4-3.6-4.3-9.8 1.9-6.1 6.2 11.5 13.5 33.3 1.9 39.8-10.9 3.7-7.2 3.7-15.8-1.7-22.1-5-5.9-13.4-8.4-20.3-4.4-4.9 2.6-.5 10.1 4.3 7.3zm-174.5-31.1c5.5 10.2 16.4 17.1 28 17.4 11.7.4 22.8-6.1 28.9-15.9 3-4.8-4.5-9.1-7.5-4.4-4.6 7.3-12.8 11.8-21.4 11.6-8.7-.3-16.4-5.6-20.5-13.1-2.7-4.9-10.2-.5-7.5 4.4zm387.1 6.9c2.1-6.7 8.2-11.7 15.3-12.2 5.5-.4 5.6-9.1 0-8.7-11 .7-20.4 8-23.7 18.5-1.6 5.4 6.8 7.7 8.4 2.4zM561.8 419.5c9.5 1.5 19 .9 28.1-2 5.3-1.7 3-10.1-2.3-8.4-7.6 2.4-15.6 3.2-23.5 2-5.4-.8-7.8 7.5-2.3 8.4zm55.4-7.5c-.2 5.8 4.5 10.2 10 11 6.3.9 11.5-3.1 16.1-6.9 4.3-3.6-1.9-9.7-6.2-6.1-2 1.7-4.3 3.8-7 4.3-1.8.4-4.3-.1-4.2-2.3.3-5.6-8.4-5.5-8.7 0zm-266 204.3c22.3-27.4 20.6-63.7 16.6-96.8-.7-5.5-9.4-5.5-8.7 0 3.6 30.2 6.5 65.3-14.1 90.6-3.5 4.4 2.7 10.6 6.2 6.2z"/></svg>
+ data/AlarmTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st1{fill:#e81700}.st1,.st6{opacity:.7}.st7{fill:#fff9f7}</style><path d="M361.6 446.5c5.8 3.1 9.8 9.4 10.1 16" fill="#e81700"/><path class="st1" d="M560.9 438.5c-45.4-23.8-126-18.8-160.3 25-30.4 39-32.7 129.5-2.6 167.5 21.5 27.2 58.9 34.8 93.2 36.5 33.3 1.6 68.8-1.3 96-21 16.6-12.1 28.9-29.8 36-49.2 21.5-58.4-7.8-130.2-62.3-158.8zm42.4 128.1c-3.7 15-12.3 29.3-23.2 40.2-21 20.9-51.4 31.2-80.8 30.7-27.9-.4-58-9-78.5-28.8-22.5-21.7-24-53.9-18.7-82.9 4.9-26.2 19.8-56.1 45.2-67.9 3.7-1.7 7.4-2.8 11.1-3.3 12.9-8.9 28.7-11.4 44.4-10.3 14 1 29.3 1.3 42.5 6.1 29.7 10.7 51.2 35.7 57.7 66.7 3.6 16.3 4.4 33.3.3 49.5z"/><path class="st1" d="M472 573.9c.9.4 1.9.7 2.8 1 1.1.3.9.2-3.3-1.2.2 0 .3.1.5.2z"/><path d="M450.1 633c11 3.7 36.5 8.7 48 9.3 20.4 1.2 43.4-8.5 62.2-16.6 18.8-8.1 35.2-23 42.3-42.2 5.9-16.2 4.9-34.2 2-51.3-3.1-18.7-8.5-37.5-19.6-52.8-33.7-46.5-128.9-53.8-166.1-6.6-39.7 50.4-27.7 140.4 31.2 160.2z" opacity=".7" fill="#fcf59a"/><path d="M581.2 442.9c10.1-5.5 20.1-11 30.1-16.7 6.4 6.8 12.8 13.6 19.2 20.5l-23.1 17.4c-11.2-5.5-21.8-12.5-31.3-20.7" fill="#5c5453"/><path d="M373.7 468.5c5.1-3.4 10.4-6.9 13.9-12s4.7-12.2 1.4-17.4c-3-4.8-9.5-7.5-10.3-13.2-6.6 7.2-12.6 15.1-17.7 23.4 6.8 6.4 13.7 12.8 20.5 19.2" opacity=".7" fill="#5c5453"/><path class="st1" d="M418.3 660.6c-4.6 12.2-9.3 24.5-13.9 36.7 7.8-.2 15.5 1.6 22.4 5.2 3-6.8 6-13.6 9.1-20.4.9-2.1 1.9-4.5 1-6.7-.8-2.1-3.1-3.2-5.2-4.2-7.1-3.1-14.1-6.2-21.2-9.2m166 3.8c2.4 9.4 6.7 18.3 12.7 26 4.9-4.1 10.8-7 17-8.2-4.8-6.9-8.3-14.5-10.4-22.6-6.1.5-12.2 0-18.1-1.5"/><path d="M322.9 471.3c13-9.8 26-19.7 39.1-29.5 12.7-9.6 26.6-21.5 26.9-37.4.1-4.7-1.2-9.5-4.4-13-2.4-2.7-5.7-4.4-9.1-5.7-19.8-7.6-44.3-.1-56.5 17.2s-10.9 42.9 2.9 59c3.6 4.2 10.4 7.8 14.3 3.7m267.6-57.5c18.7 19 39.7 35.6 62.4 49.5 16.8-16.1 15.3-46.8-2.3-62.1-17.6-15.3-47.1-13.2-63.3 3.6" opacity=".7" fill="#fb0"/><g class="st6"><path class="st7" d="M339 421.6c-1.2-3-.5-7.2 3.1-8.4 7.3-2.4 4.2-14-3.2-11.6-9.2 3.1-15.3 13.8-11.5 23.2 1.2 3 4 5.1 7.4 4.2 2.8-.8 5.4-4.4 4.2-7.4z"/></g><g class="st6"><path class="st7" d="M633.2 412.9c4-2.4 8.2-2.3 12.1.2 6.5 4.2 12.5-6.2 6.1-10.4-7.3-4.8-16.8-4.8-24.2-.2-6.7 4.1-.7 14.5 6 10.4z"/></g><path d="M336 463.1c-1.7 1.4-3.3 2.8-5 4.2-5.9 5 2.6 13.4 8.5 8.5 9.4-7.8 18.8-15.6 28.1-23.5 8.5-7.1 17.7-13.8 25.5-21.7 12.9-13.2 14.7-31.2-.2-43.9-26.6-22.6-73.5-14-85.9 19.8-6.3 17-2.8 37.2 10.4 50 5.5 5.4 14.1-3.1 8.5-8.5-11.7-11.4-12.8-30.2-4.5-43.9 9-14.9 28.5-20.5 45-17 8.5 1.8 18 5.8 23 13.4 5.8 8.7.3 16.8-6.2 23-16.2 15.7-34.9 29.3-52.2 43.8l8.5 8.5c1.7-1.4 3.3-2.8 5-4.2 5.9-5-2.6-13.4-8.5-8.5z"/><path d="M358.4 453.6c3.5 9.3 9.5 17 18 22.2 6.6 4.1 12.6-6.3 6.1-10.4-5.7-3.5-10.2-8.8-12.5-15.1-2.7-7-14.3-3.9-11.6 3.3zm17.3-20.9c5 6.2 10.1 12.4 15.2 18.7 2 2.5 6.4 2.1 8.5 0 2.5-2.5 2-6 0-8.5-5-6.2-10.1-12.4-15.2-18.7-2-2.5-6.4-2.1-8.5 0-2.5 2.5-2.1 6 0 8.5z"/><path d="M407.7 447.8c49.5-32.8 115.7-35.9 167.9-7.4 6.8 3.7 12.9-6.7 6.1-10.4-55.8-30.5-126.9-27.7-180 7.4-6.5 4.3-.4 14.7 6 10.4z"/><path d="M580.8 449c9.6-4.3 19.2-8.6 28.8-12.8 7-3.1.9-13.5-6.1-10.4-9.6 4.3-19.2 8.6-28.8 12.8-7 3.2-.9 13.6 6.1 10.4zm32.8 19.6c9.1-2.7 17.2-7.8 23.4-14.9 5.1-5.8-3.4-14.3-8.5-8.5-4.9 5.6-11 9.6-18.1 11.8-7.4 2.2-4.3 13.8 3.2 11.6z"/><path d="M593 411.3c14.7 13.4 29.3 26.8 44 40.1 4.4 4 11.5 10.9 17.6 5.1 4.6-4.3 1.4-11.3-4-12.8-2.7-.8-5.2.6-6.8 2.8-.2.2-.3.4-.5.6-4.5 6.3 6 12.3 10.4 6.1.2-.2.3-.4.5-.6-2.3.9-4.5 1.8-6.8 2.8-.8-.8-1.6-1.5-2.4-2.3.2-1.5.4-3.1.6-4.6-.2.3-.3.6-.5.8 1.2-.9 2.4-1.8 3.6-2.8-.7.1-9.9-9.6-10.9-10.6-4.1-3.8-8.3-7.6-12.4-11.3-8-7.3-15.9-14.5-23.9-21.8-5.7-5.2-14.2 3.3-8.5 8.5z"/><path d="M603.2 407.5c12.7-18.5 42-23.4 59.5-8.8 8.3 7 13 17.9 13.6 28.6.3 5.7-.3 11.4-2.2 16.8-.5 1.5-6 14.3-8.1 13.6 1.2.9 2.4 1.8 3.6 2.8-.2-.3-.5-.6-.7-1-4.5-6.2-14.9-.2-10.4 6.1 11.8 16.5 26.5-13.9 28.5-23.1 3.5-15.9.1-33.3-10.1-46.1-21.4-27-65.4-22.4-84.1 5-4.4 6.4 6 12.4 10.4 6.1zm-229.6 67c-19.7 42.8-21.5 95.3-.7 138 17 35 51.2 57.5 88.4 66.4 26.5 6.3 53.8 6 80.7 1.9 7.6-1.2 4.4-12.7-3.2-11.6-40.1 6.1-83.4 2.2-118.1-20.5-32-21-48.1-56.6-50.2-94.2-1.4-25.3 3-51 13.6-74 3-6.9-7.3-13-10.5-6z"/><path d="M606.6 468.1c28.7 34.1 35.2 78.4 24.7 121-9.5 38.8-37.5 79.3-82 77.4-7.7-.3-7.7 11.7 0 12 48.9 2.1 81.9-40.9 93-84 12.3-47.6 4.9-96.7-27.2-134.9-5-5.9-13.4 2.6-8.5 8.5z"/><path d="M412 491.5c-17.5 36.6-23.6 84.9 3.8 118.5 27.3 33.5 79.2 39.8 119.4 32.9 21.4-3.7 41.8-13.2 55.1-30.8 12.2-16.1 17.1-36.4 17.7-56.3.7-21.3-3-43.5-10.5-63.4s-20.2-37-40.8-44.4c-22.8-8.1-50.5-8.9-74.3-5.5-23.2 3.2-45.4 12.4-61.4 29.9-3.5 3.8 2.2 9.5 5.7 5.7 26.5-29.1 69.5-32.4 106.2-27.2 11.3 1.6 23 4 32.7 10.4 8.3 5.5 14.5 13.5 19.2 22.2 8.9 16.8 13.3 36.7 14.8 55.6 1.5 18.6 0 38.3-8 55.5-8.5 18.2-24 30.8-43 36.9-19.2 6.2-40.3 6.8-60.3 4.6-19.1-2.1-38.5-7.7-54-19.4-38-28.6-33.7-82.6-15.3-121.1 2.1-4.7-4.8-8.8-7-4.1z"/><path d="M484.5 505.5c1.4 16.7 2.7 33.3 4.1 50 .6 7.7 12.6 7.7 12 0-1.4-16.7-2.7-33.3-4.1-50-.6-7.6-12.6-7.7-12 0z"/><path d="M492.5 559.6c21.8-4.1 43.9-5.3 66.1-3.8 7.7.5 7.7-11.5 0-12-23.2-1.6-46.4 0-69.3 4.3-7.6 1.3-4.3 12.9 3.2 11.5z"/><path d="M547 534.6c1 8.3 3.2 15.9 6.8 23.4 1.1 2.3 4.4 3.5 6.8 2.8 5.8-1.8 11.6-3.6 17.3-5.4 3.9-1.2 6.4-7 2.7-10-6.5-5.3-13.1-10.6-19.7-15.8-6-4.8-14.5 3.6-8.5 8.5 6.5 5.3 13.1 10.6 19.7 15.8.9-3.3 1.8-6.7 2.7-10-5.8 1.8-11.6 3.6-17.3 5.4 2.3.9 4.5 1.8 6.8 2.8-2.6-5.5-4.4-11.3-5.1-17.3-.4-3.2-2.5-6-6-6-3.1-.3-6.6 2.5-6.2 5.8zm-125.5 15.3c7.8-.9 15.6-1.8 23.5-2.6 7.6-.8 7.7-12.9 0-12-7.8.9-15.6 1.8-23.5 2.6-7.6.8-7.7 12.9 0 12zm63.2-100.3V460c0 3.2 2.8 6 6 6 3.3 0 6-2.8 6-6v-10.4c0-3.2-2.8-6-6-6-3.3 0-6 2.8-6 6zm5.5 42.2c2.3 6 4.6 12 6.9 17.9 1.9-2.5 3.9-5.1 5.8-7.6l-17.4.3c-7.7.1-7.8 12.2 0 12l17.4-.3c3.6-.1 7.2-3.8 5.8-7.6-2.3-6-4.6-12-6.9-17.9-1.2-3-4-5.1-7.4-4.2-2.9.8-5.4 4.4-4.2 7.4zm106 55h2.6c1.5 0 3.2-.7 4.2-1.8 1-1 1.8-2.8 1.8-4.2-.1-1.5-.6-3.2-1.8-4.2-1.2-1.1-2.6-1.8-4.2-1.8h-2.6c-1.5 0-3.2.7-4.2 1.8-1 1-1.8 2.8-1.8 4.2.1 1.5.6 3.2 1.8 4.2 1.2 1.1 2.6 1.8 4.2 1.8z"/><path d="M588.4 546.8h2.6c1.5 0 3.2-.7 4.2-1.8 1-1 1.8-2.8 1.8-4.2-.1-1.5-.6-3.2-1.8-4.2-1.2-1.1-2.6-1.8-4.2-1.8h-2.6c-1.5 0-3.2.7-4.2 1.8-1 1-1.8 2.8-1.8 4.2.1 1.5.6 3.2 1.8 4.2 1.1 1.1 2.6 1.8 4.2 1.8zM504.3 613c-3.2 5.3-4 11.7-1.9 17.5 1.5 4.2 6.6 6 10 2.7 7.3-7.1 8.8-19.1 2.8-27.5-4.5-6.2-14.9-.2-10.4 6.1 3 4.1 2.9 9.3-.9 13 3.4.9 6.7 1.8 10 2.7-1.1-3-1-5.5.6-8.3 4.2-6.8-6.2-12.8-10.2-6.2zm-95 43.3c-3.7 12.1-7.5 24.2-11.2 36.3-.8 2.5.5 5.5 2.8 6.8 7.5 4.5 15.4 8 23.6 10.9 7.3 2.5 10.5-9.1 3.2-11.6s-14.1-5.8-20.8-9.7c.9 2.3 1.8 4.5 2.8 6.8 3.7-12.1 7.5-24.2 11.2-36.3 2.3-7.5-9.3-10.6-11.6-3.2z"/><path d="M436.9 670.7c-5.1 10.5-10.3 20.9-15.5 31.4-3.4 6.9 7 13 10.4 6.1 5.1-10.5 10.3-20.9 15.5-31.4 3.4-6.9-7-13-10.4-6.1zm133.9 5.9c3.6 7.5 6.7 15.6 11 22.7 2.4 4 6.3 7 11.2 6.7 4.1-.2 7.5-2.8 10.4-5.5 1.8-1.6 6.4-7.9 9.3-7.5 7.6 1.2 10.8-10.4 3.2-11.6-8.5-1.3-13.8 3.7-19.5 9.2-.8.8-2.4 2.8-3.6 3-.7.1-.6-.3-1.5-2.1-3.6-6.9-6.8-14.1-10.2-21.1-3.3-6.8-13.6-.7-10.3 6.2z"/><path d="M596.4 666.4c4.2 7.9 8.5 15.8 12.7 23.7 3.7 6.8 14 .8 10.4-6.1-4.2-7.9-8.5-15.8-12.7-23.7-3.7-6.8-14.1-.7-10.4 6.1zM475.5 502.5c.2.1.1.2-.1.2-5.5 3.4-1.9 13.7 4.6 11 11-4.6 19.1-13.3 22.4-24.8 1.4-4.8-4.4-9.7-8.8-6.8-7.2 4.8-12.2 11.2-15.4 19.2-1.2 3 1.3 6.6 4.2 7.4 3.4 1 6.2-1.2 7.4-4.2 2-4.9 5.5-9.1 9.9-12-2.9-2.3-5.9-4.5-8.8-6.8-2 7.2-7 13.5-14 16.5 1.5 3.7 3.1 7.3 4.6 11 3.9-2.4 6-6 6-10.6.2-7.8-11.8-7.8-12-.1z"/><path d="M492.8 509.5V546c0 7.7 12 7.7 12 0v-36.5c.1-7.7-12-7.7-12 0zm185.5-133.7c8.2 4.1 14.7 10.2 19.2 18.2 3.8 6.7 14.2.7 10.4-6.1-5.5-9.7-13.6-17.6-23.6-22.6-6.8-3.4-12.9 7-6 10.5zM294 408.6c1.5-13.9 9.8-26 21.8-32.9 6.7-3.9.6-14.2-6.1-10.4-15.9 9.2-25.8 25.1-27.8 43.2-.7 7.8 11.3 7.7 12.1.1zm-28.1-12.4c3.4-15.6 12.3-29 25.7-37.8 6.4-4.2.4-14.6-6.1-10.4-15.9 10.4-27.1 26.3-31.2 45-1.6 7.5 9.9 10.8 11.6 3.2zM697 359.4c6.4 2.6 11.1 7.9 13.9 14.1 1.4 3 5.6 3.7 8.2 2.1 3-1.8 3.5-5.3 2.2-8.2-4.2-9.2-11.8-15.8-21.1-19.6-3-1.2-6.6 1.4-7.4 4.2-.9 3.5 1.2 6.1 4.2 7.4z"/></svg>
+ data/AlienTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0{opacity:.7;fill:#c6e000}</style><path class="st0" d="M388.4 247.2c2.6-9.5 5.2-19 7.8-28.6-2.1-1.9-4.2-3.7-6.3-5.6l-1.5 34.2z"/><path class="st0" d="M660.3 906.8l15-19.5c-14.5-3.8-29 4.9-43 10.2-14 5.4-33.8 5.4-40-8.3-12.5-21.6-13-49.7-1.2-71.7-6.3 1.8-13-3-15.8-9-7.6-16.2-7.5-36.8-11.7-55.3 8.8-11.4 9.6-26.9 9.4-41.3-.7-43.6-7.8-87-21.2-128.5 32.3 11.6 59.2 37.3 72.4 68.9s12.4 68.8-2.1 99.9c8.9-2.7 16.5-9.7 19.8-18.3-4.9 12.7 4.8 28.8 18.4 30.4 4.1.6 8.3 1.3 12.4 1.9 6.7-73.9-32.4-150-96.4-187.7-13.6-8-27.2-14.9-34.6-29.7-4.2-8.4-2.1-28.6-4.4-39.6.1-3.5.2-7 .3-10.6 14.7 4.3 29.5 5.2 45.5-1 48.4-18.9 83-72.3 74-123.5-22.8-7.4-41.9 29.9-65 23.5-13.6-3.8-18.6-20.6-18.7-34.7-.3-35.1 16-70.1 43.2-92.3 11.5-9.5 25.4-17.4 31.8-30.9s-1.5-34.4-16.4-33.1c1.2-21.9 16.3-42.4 36.8-50 2.2-12.1-4.7-25.2-15.8-30.3-11.6 19.4-28.4 35.6-48.1 46.6-21.6-34.3-62.1-56-102.7-54.9-40.6 1.1-79.8 24.9-99.5 60.4-9.9-.4-15.4-11.8-16.7-21.6-1.2-9.8-.7-20.8-7.1-28.4-6.4-7.6-22.9-4.8-21.6 5l44.2 64.8c-1.8 6.7-3.7 13.4-5.5 20.1 53.4 48.3 88 116.9 95.3 188.4.9 8.4-6.4 15.3-14.7 14-48.3-7.3-92.5-39.4-113.4-83.6 8.7 51.2 25.6 113.8 76.8 122.8 21.5 3.8 40.3 12.8 58 21.5 1.1 14.2 5.2 28.1 11.8 40.7-1.8 4.4-3.1 8.5-3.6 11.4-3.5 19.6 5.6 23.1-11.5 34.3-12.4 8.1-26.9 12.5-39.3 21.3-23.5 16.6-43.3 38.4-57.7 63.2-8.4 14.4-15 29.8-19.5 45.9-3.3 12-1.1 36.1-6.8 45.9l16.8-28.8c5.3 9.6 10.5 19.3 15.8 28.9 5.8-18.7 6.5-39 1.9-58 6.6 5.2 13.2 10.3 19.9 15.4 4-12.7-1.6-27.8-13-34.8 18.8-29.7 45.1-54.7 75.8-71.9 1.7 26.1-5.5 51.9-8.6 77.9-3 25-1.7 52.3 13.1 72.5-15.6 17.2-22 42.5-15.8 65-3.4-1.3-6.7-2.7-10.1-4-6.6 2.9-2.5 15.5 4.6 14 .7 14.9 1.4 29.9 2.1 44.8-23 10.5-46.1 21-69.1 31.5-3.8-7.6-12.4-12.5-20.8-12-8.5.5-16.4 6.3-19.4 14.2 11.8 6.5 25.2 9.8 38.7 9.7-5.2 1.3-5.7 9.5-1.5 12.8 4.2 3.3 10.5 2.3 15-.5s7.9-7.2 11.7-10.9c11.3-10.9 27.7-16.5 43.4-14.6 4.8.6 9.7 1.8 14.4 1 4.8-.8 9.6-4.4 9.6-9.2.1-4.2-3.2-7.6-5.8-10.9-11.3-14.6-10.4-34.9-8.9-53.4 1.3-17 3.3-35.5 15.2-47.6 5-5.1 11.5-8.7 16.8-13.5 12 5.4 25.9 6.4 37.1 1.6 2.5 6.7 4.9 13.1 6.7 18.8 12.4 39.7 25.3 78 24.9 120.2-1.2-1.6-4.3-3.5-6.1-1.5-2 2.2-1 6 1.3 8 2.3 1.9 5.5 2.4 8.4 2.9 21 3.2 42 6.5 63 9.7 4.6.7 9.3 1.4 13.7 0s8.3-5.5 7.9-10.1c-.1-4.6-6.5-7.8-9.8-4.5z"/><path d="M583.5 393.6c-7.1-15.1-7.2-32.9-3-49 4.2-16.2 12.3-31.1 21.2-45.2 7.3-11.6 15.5-23.1 26.4-31.4s25.3-13.1 38.7-10c20.2 4.7 33 27.1 31.3 47.9s-15.1 39-31.7 51.6c-16.6 12.6-36.2 20.3-55.4 28.3-8.8 3.7-19.2 7.4-27.5 2.7-10.8-6.1-10.7-21.4-9.1-33.6m-156.1 25.7c6.9 6.1 14.7 11.8 23.7 13.6 9 1.8 19.6-1.3 24.1-9.3 3.7-6.7 2.5-15 .7-22.4-7.7-32.8-45.1-122.4-93-108-49.2 14.9 25.5 109.6 44.5 126.1z" fill="#000d0c"/><path d="M368.6 108.7c-5.9 4.5-11.3 9.4-16.2 14.9-3.3 3.7-9.7 9.6-9.6 15 .3 13.7 23.9 3.2 29.5 1.2 4.5-1.7 2.6-9-2-7.3-4.3 1.6-8.7 3.1-13.2 4.3-1.8.5-3.6 1.2-5.5 1.2-.1 0-1.5-.3-1 .2-.2-.2 2.1-3 2.3-3.3 5.6-7.4 12.2-14 19.6-19.7 3.8-2.9 0-9.5-3.9-6.5z"/><path d="M356.6 143.8c14.5 22.1 29 44.1 43.5 66.2 2.7 4.1 9.2.3 6.6-3.8-14.5-22.1-29-44.1-43.5-66.2-2.7-4.1-9.3-.3-6.6 3.8zm13.6-30c2.8-1.4 6.1-3.9 9.1-4.5v-1c.3 1.2.6 2.3.8 3.5.4 1.7.6 3.5.8 5.2.3 3.3.3 6.6 0 9.9-.3 2.9-.9 5.9-.2 8.8 1.4 5.5 7 10.5 10.3 14.9 4.4 5.8 8.7 11.8 12.9 17.8 2.8 4 9.3.2 6.6-3.8-4.7-6.8-9.5-13.5-14.6-20-2.3-2.9-6.9-7.1-7.8-10.8-.9-3.6.7-8.5.7-12.2 0-5.4.1-15.9-4.8-19.5-4.8-3.6-13.4 3.2-17.6 5.3-4.4 2-.5 8.6 3.8 6.4z"/><path d="M407 183.4c14.6-26.9 37.2-49.4 64.8-62.8 15.5-7.6 32.5-11.3 49.7-8.9 16.7 2.3 32.3 9.3 46.2 18.7 15.9 10.7 29.5 24.4 42.4 38.5 3.3 3.6 8.7-1.8 5.4-5.4-23.9-26-51.8-51.5-87.6-58.4-34.6-6.6-67.7 8.8-93.3 31.4-13.9 12.2-25.4 26.9-34.2 43.1-2.3 4.2 4.3 8.1 6.6 3.8z"/><path d="M609 170.8c18.2-12.6 35.8-26.3 52.5-40.9 1.3-1.1 1.3-3.2.6-4.6-3.9-7.7-5.9-15.8-6-24.5l-3.8 3.8c5.5 0 9 5.2 11.7 9.3 3.6 5.5 7.1 11.1 10.3 16.8 6.5 11.3 12.1 23.1 15.3 35.8.9-1.6 1.8-3.1 2.7-4.7-9.1 1.4-21.5 3-26.8-6.6-2.4-4.3-8.9-.4-6.6 3.8 7.2 13 22.8 12.1 35.4 10.1 2-.3 3.1-2.9 2.7-4.7-3.9-15-10.8-28.9-18.7-42.1-5.8-9.6-12.8-25.5-26-25.4-2 0-3.8 1.7-3.8 3.8.1 10 2.5 19.4 7 28.3.2-1.5.4-3.1.6-4.6-16.2 14.2-33.2 27.5-50.9 39.7-4 2.9-.3 9.5 3.8 6.7z"/><path d="M664.3 157.9c-7.8 8.6-14.8 17.8-21 27.7-2.6 4.2 4 8 6.6 3.8 5.8-9.3 12.4-18 19.8-26.1 3.3-3.6-2.1-9-5.4-5.4zm-273.1 49.3c-7.4 11-12.4 23.4-14.5 36.5-.8 4.8 6.5 6.8 7.3 2 2-12.5 6.6-24.1 13.7-34.7 2.8-4-3.8-7.8-6.5-3.8z"/><path d="M485.2 405.7c-.2-33.9-9.2-67.4-25.1-97.3-8-14.9-17.7-28.9-28.9-41.6-10.6-12-22.8-24-38.3-29.1-13-4.2-28.2-1.9-38.2 7.8-12.5 12.3-7.3 29.1-2.7 43.8 10.5 33.6 25.4 66.8 50.9 91.8 12.9 12.6 28.3 22.9 45.5 28.8 7.1 2.5 14.9 3.8 20.5-2.6 4.7-5.4 5.6-13.3 5.8-20.2.1-4.9-7.5-4.9-7.6 0-.1 5-.5 11.8-4.3 15.6-4.7 4.7-14.8-.8-19.8-3-13.2-5.9-25-14.4-35.2-24.5-22.2-21.9-36-50.6-45.8-79.9-2.5-7.5-5.1-15-6.8-22.7-1.6-7.2-1.3-14.6 3.7-20.4 8.5-9.7 22.8-10.8 34.2-6.4 13.7 5.3 24.5 16.8 33.9 27.6 9.8 11.3 18.4 23.7 25.6 36.8 16 29.2 25 62.1 25.2 95.5-.1 4.9 7.5 4.9 7.4 0zm93.4-12.3c-2.6-25.7 1.5-51.9 12.2-75.4 10.4-22.9 27.3-46.2 50.1-57.9 11.9-6.1 26.2-8.4 39-3.7 11.5 4.1 19.7 14.2 23.4 25.6 8.2 25.2-5.7 50.5-24.3 67-11.7 10.3-25.5 18-39.3 24.9-14.5 7.2-29.6 13.9-46 14.2-4.9.1-4.9 7.7 0 7.6 15.8-.3 30.5-5.9 44.5-12.7 13.9-6.7 27.6-14 39.8-23.4 21.7-16.8 39.3-43 34.6-71.6-2-12.3-8.3-24.1-18.2-31.9-11-8.7-25.3-11-38.9-8.7-28.3 4.8-50.5 29.8-64.3 53.4-16.2 27.9-23.5 60.7-20.3 92.8.6 4.6 8.2 4.7 7.7-.2zm68.8-194.9c-.1-.1-.2-.3-.3-.4.3 1.2.7 2.5 1 3.7.1-.2.1-.4.2-.6-.6.8-1.2 1.5-1.8 2.3.2-.1.4-.2.5-.3-1 .1-2 .3-2.9.4.9.3 2.7 3.9 3.3 4.7 1 1.4 1.9 2.7 2.8 4.1 2.2 3.2 4.2 6.5 6.2 9.9 3.9 6.7 7.4 13.7 10.5 20.9 2 4.5 8.5.6 6.6-3.8-5.1-11.8-11.3-23-18.7-33.5-2.1-3-5.3-9.8-9.8-9.7-4.4 0-5.4 5-3.1 7.8 3.2 3.6 8.5-1.8 5.5-5.5zM367.7 340.6c0-.5 0-1.1.1-1.6.1-2-1.8-3.9-3.8-3.8-2.1.1-3.7 1.7-3.8 3.8 0 .5 0 1.1-.1 1.6-.1 2 1.8 3.9 3.8 3.8 2.1-.1 3.7-1.6 3.8-3.8zm-11.8 18.9c8.1 50 43.1 94.2 88.7 115.6 13 6.1 26.6 10.3 40.8 12.5l-2.6-2.6c10.9 31.5 19.2 63.8 24.8 96.7.8 4.8 8.1 2.8 7.3-2a609.8 609.8 0 0 0-24.8-96.7c-.4-1.1-1.3-2.5-2.6-2.6-48.2-7.2-90.5-39.7-111.8-83.3-6.1-12.5-10.2-25.8-12.4-39.5-.9-5-8.2-2.9-7.4 1.9zm198.9 206.8c-.4-22.2-.8-44.5-1.1-66.7l-3.8 3.8c54.7-2 103.5-36.9 122.8-88.1 5.4-14.3 8.2-29.4 8.6-44.6.1-4.9-7.5-4.9-7.6 0-.9 32.4-14.1 64.2-37 87.3-22.9 23.1-54.5 36.7-86.9 37.9-2 .1-3.8 1.7-3.8 3.8.4 22.2.8 44.5 1.1 66.7.2 4.8 7.8 4.8 7.7-.1zM508.6 439c5.1 7.9 13.4 15.2 23.4 14.2 8.5-.9 16.3-8.3 15.4-17.2-.5-4.8-8.1-4.9-7.6 0 .6 5.8-4.7 10-10.3 9.7-6.3-.4-11.2-5.6-14.4-10.5-2.6-4.1-9.2-.3-6.5 3.8zm-84.5-219.8c-.9.4-.4-.3-.4.3.1.8.4.4.2 1.3-.3 1.6-2.1 3.2-3.2 4.3-3.4 3.5 2 8.9 5.4 5.4 3.3-3.3 6.8-7.9 5.1-12.8-1.5-4.6-6.5-7.1-10.9-4.9-4.4 2-.6 8.6 3.8 6.4zm198.1 23c-5.3-8.9-6-19.1-2.1-28.7-1.6.9-3.1 1.8-4.7 2.6 3.4 1.1 5.3 4.1 5.2 7.6 0 4.9 7.6 4.9 7.6 0 0-7.1-4.2-12.7-10.8-14.9-2.1-.7-3.9.8-4.7 2.6-4.6 11.3-3.4 24.1 2.8 34.6 2.6 4.3 9.2.4 6.7-3.8z"/><path d="M382.1 283c12.5-6.6 28.9-1.3 35.5 11 2.3 4.3 8.9.5 6.6-3.8-8.6-16.1-29.9-22.2-45.9-13.7-4.3 2.3-.5 8.8 3.8 6.5zm54.7 65.7c.5 1.6.9 3.2 1.4 4.9.5 1.9 2.7 3.3 4.7 2.6 2-.6 3.2-2.6 2.6-4.7-.5-1.6-.9-3.2-1.4-4.9-.5-1.9-2.7-3.3-4.7-2.6-1.9.6-3.2 2.6-2.6 4.7zm178.9-15.4c4.4-17.2 15.5-31.8 30.8-40.6 4.2-2.4.4-9-3.8-6.6-17 9.8-29.4 26.1-34.3 45.1-1.2 4.8 6.1 6.9 7.3 2.1zm48-25.9c-2-1.1-4-2.2-6-3.4.3 2 .5 4 .8 6 6.3-5.1 13.2-9.5 20.5-13.1 4.4-2.2.5-8.8-3.8-6.6-7.9 4-15.2 8.8-22 14.3-1.9 1.5-1.2 4.9.8 6 2 1.1 4 2.2 6 3.4 4.1 2.4 7.9-4.2 3.7-6.6zm-171 246.2c-52.5 22.2-99.1 65-115.1 121-4.1 14.3-5.9 29.2-5.4 44 .2 4.9 7.8 4.9 7.6 0-1.9-54.1 29.9-103.2 72.8-134 13.7-9.8 28.5-18 44-24.5 4.5-1.9.6-8.4-3.9-6.5z"/><path d="M365.9 698.8c-8.2 19-1.4 39.5 14 52.7 2.2 1.8 5.5 1.2 6.4-1.7 1.8-6 3.6-12.1 5.5-18.1 1.4-4.7-5.9-6.7-7.3-2-1.8 6-3.6 12.1-5.5 18.1 2.1-.6 4.2-1.1 6.4-1.7-12.5-10.6-19.6-27.6-12.8-43.5 1.8-4.4-4.7-8.3-6.7-3.8z"/><path d="M386.9 714.4c.7 8.8 3.7 17.1 8.9 24.3 4 5.5 10.8 14.5 18.8 11.8 7.8-2.7 6.7-12.6 6.4-19-.6-11.5-1.9-23-3.9-34.4-.8-4.8-8.1-2.8-7.3 2 1.3 7.7 2.3 15.4 3 23.1.3 3.7.5 7.4.7 11.2.1 2.4 1 6.5-.3 8.7-2.9 4.6-11.4-7.9-12.9-10.3-3.2-5.3-5.2-11.1-5.7-17.3-.5-5-8.1-5-7.7-.1z"/><path d="M406.2 696.7c7.5 8.6 26.5 19.7 33.8 5 6.4-12.8-6.2-26.5-17.1-31.4-4.4-2-8.3 4.6-3.8 6.6 7.1 3.2 16.6 10.8 14.7 19.8-2.5 11.3-18.4-1-22.2-5.4-3.2-3.6-8.6 1.7-5.4 5.4z"/><path d="M415.6 678.5c6.8-12.7 14.9-24.7 24.2-35.8 4.5-5.4 9.3-10.6 14.3-15.6 2.7-2.7 5.5-5.4 8.4-8 1.2-1.1 2.5-2.2 3.8-3.3 1-.8 3.6-3.9 4.9-4-1.1-.6-2.2-1.2-3.3-1.9.1.2.2.4.4.5v-3.8l-.3.6c1.1-.6 2.2-1.2 3.3-1.9h-.6c-4.9-.3-4.9 7.3 0 7.6h.6c1.3.1 2.7-.8 3.3-1.9l.3-.6c.6-1.1.8-2.7 0-3.8-4.8-6.9-13.2 3.2-17 6.6-6.7 6-13.1 12.5-19.1 19.2-11.5 12.9-21.5 27-29.6 42.2-2.4 4.4 4.1 8.2 6.4 3.9zm65.9-78.2c1.4 29.8-9.1 58.1-13.8 87.1-2.1 13.2-4.3 28.4-.7 41.5 1.6 6 5.1 10.9 9.3 15.4 4 4.2 9 8.2 10.9 13.9 1.5 4.6 8.9 2.6 7.3-2-3.8-11.5-16.5-16.9-20-28.5-4.1-13.4-1.1-29.8 1.4-43.3 5.1-27.9 14.6-55.4 13.2-84.1-.2-4.8-7.8-4.8-7.6 0z"/><path d="M472.3 736.3c-4.6 21.7 4.3 43.9-1.7 65.3 1.6-.9 3.1-1.8 4.7-2.7-6.7-2.4-15.4-1.2-20.2 4.3-4.7 5.4-3.2 13.3 2 17.8 3.1 2.7 6.4 3.5 7.7 7.9 1 3.6.5 7.6.2 11.2-.5 5.7-1.2 11.4-1.8 17.1-.3 2.7-.6 5.4-1 8.1-.2 1.9.1 6-1 7.6.8-.6 1.5-1.2 2.3-1.8.3 0 .6.1.9.1.6 1.1 1.2 2.2 1.9 3.3v-.8c-.4.9-.7 1.8-1.1 2.7.2-.2.5-.4.7-.6-.9.4-1.8.7-2.7 1.1.3 0 .7-.1 1-.1 4.8-.5 4.9-8.1 0-7.6-3.5.4-7.2 3.3-4.9 7.2 1.6 2.7 5.8 3.1 8 1 1.6-1.5 1.5-3.9 1.8-5.9l1.2-9.9c.7-6.3 1.4-12.6 2-18.9.8-8.2 1.8-17.8-5-24-2.8-2.5-9.4-4.7-7.1-9.7 2.1-4.6 9.4-4.3 13.2-3 1.9.7 4.1-.8 4.7-2.7 6.1-21.6-2.9-43.7 1.7-65.3.8-4.5-6.5-6.5-7.5-1.7z"/><path class="st0" d="M467.2 885.5c-6 20.1-22.7 36.7-42.9 42.6-4.3 1.2-9.4 1.8-12.7-1.2-5.8-5.3.1-14.8 6.3-19.7 13.3-10.4 28.9-17.9 45.3-21.7"/><path d="M460.9 866.5c-9.3 3.7-18.5 7.4-27.8 11.1-8.5 3.4-17 7.5-25.7 10.2-4.9 1.6-6.9-1-11-3-2.7-1.3-5.5-2.2-8.5-2.8-6.4-1.1-13.3-.5-19.2 2.2-11.7 5.4-16.1 20.3-6.9 30.2 8.5 9.1 24.6 10.1 34.8 3.7 4.1-2.6.3-9.2-3.8-6.6-8.1 5.1-24.2 4.2-27.9-6.3-4.6-13.3 13.6-17.8 23-15.5 5.1 1.2 8.9 5.4 14.1 6.3 6.1 1.1 12.9-3.1 18.4-5.3 14.2-5.7 28.4-11.3 42.5-17 4.5-1.7 2.6-9-2-7.2z"/><path d="M455.3 886.6c-13.3 3.1-26 8.2-37.5 15.5l5.2 5.2c.8-1.3 1.7-2.6 2.5-3.8 1.2-1.9.1-5.2-2.3-5.6-11.7-1.8-26.4 1.8-31.4 13.8-4.5 10.9 2.4 23.4 13.5 26.7 13.2 4 27.7-5.5 38.2-12.6 6.2-4.1 12-8.7 18-13.1 3-2.2 6-4.4 9-6.5 1.3-.9 2.6-1.8 4-2.7 1.1-.7 4.1-1.7 3.4-3 2.3 4.3 8.9.5 6.6-3.8-4.9-9.3-19.8 4.3-24.2 7.6-9.6 7.1-19 14.6-29.5 20.5-9.4 5.3-26.9 12.8-32.2-2-4.7-13.2 12.7-19.1 22.6-17.6-.8-1.9-1.5-3.7-2.3-5.6-.8 1.3-1.7 2.6-2.5 3.8-2.1 3.2 2 7.2 5.2 5.2 11-7 23-11.8 35.7-14.7 4.8-1.1 2.8-8.4-2-7.3z"/><path d="M489.6 879c4.2 1.6 8.2 3.8 11.7 6.5 2.8 2.2 7.5 5.9 2 7.7-8.1 2.6-18.3 1.8-26.7 1.5-4.9-.2-4.9 7.4 0 7.6 7.9.3 15.9.1 23.7-.9 4.6-.6 10.5-1.9 12.9-6.4 5.9-10.9-14.3-20.6-21.6-23.4-4.6-1.7-6.6 5.7-2 7.4zm0-17.3c1.1-28.3 4.9-56.4 11.2-84h-7.3c2.1 7 10 7.2 16 5.8 9.7-2.3 18.5-3.8 28.5-2.5 4.8.6 4.8-7 0-7.6-6.2-.8-12.5-.8-18.7.1-2.4.3-17.4 5.3-18.4 2.2-1-3.5-6.5-3.8-7.3 0-6.5 28.2-10.4 57-11.5 86-.3 4.9 7.3 4.9 7.5 0zm55.1-85.2c11.1 23.5 18.8 48.6 22.1 74.5.6 4.8 8.2 4.8 7.6 0-3.5-27.2-11.4-53.5-23.2-78.3-2-4.5-8.5-.6-6.5 3.8zm27.8-5.9c4.8 13 7.5 26.5 7.8 40.4 0 2.5 2.4 4.3 4.8 3.7 4.9-1.3 17 2.7 10.3 8.9-2.4 2.2-6.2 1.9-8.6 4.3-2.2 2.3-2 5.2-1.8 8.2 1.2 18.3 3.5 36.5 6.4 54.6.8 4.8 8.1 2.8 7.3-2a648.8 648.8 0 0 1-4.5-34.1c-.6-5.5-1.1-11.1-1.5-16.7 0-.5-.6-3.6-.4-4.2.4-.9 1.2-.9 2.5-1.3 1.7-.6 3.2-1.3 4.6-2.4 5.3-4 7.2-11.4 3.1-16.9-4.3-5.9-12.7-7.5-19.5-5.8 1.6 1.2 3.2 2.4 4.8 3.7-.3-14.5-3.1-28.8-8.1-42.4-1.5-4.6-8.9-2.6-7.2 2z"/><path d="M573 845.8c-.9 17.7.8 35.3 4.8 52.6 1.1 4.8 8.4 2.8 7.3-2-3.8-16.6-5.3-33.6-4.5-50.6.2-4.9-7.4-4.9-7.6 0z"/><path d="M573.8 894.5c-12.7.4-18.4 15.4-8.3 23.6 13.8 11.1 33.5 3.9 49.3 4.4 4.9.2 4.9-7.4 0-7.6-11.8-.4-23.8 3.4-35.5 1.1-3.9-.8-9.9-2.5-11.4-6.7-1.4-4 2.1-7.1 5.8-7.2 5-.2 5-7.8.1-7.6zm27-2.7c11.2 3.2 22.4 6.8 33.4 10.8 2 .7 4-.8 4.7-2.7 4-11.2 17.9-16.3 28.9-15.9 5 .2 14.1 1.6 15.7 7.4 1.7 6-6.7 10.5-11 12.3-4.5 1.9-.6 8.5 3.8 6.6 7.2-3.1 15.3-9.5 15-18.2-.3-8.6-9.2-13.4-16.7-14.9-16.5-3.4-37.1 3.9-43.1 20.7 1.6-.9 3.1-1.8 4.7-2.7-11-4-22.1-7.6-33.4-10.8-4.7-1.2-6.8 6.1-2 7.4z"/><path d="M592.4 919.5c20 12.3 44.8 16.6 67.9 12.7 9.6-1.6 22.6-6.1 24.2-17.3 1.5-10.5-9.5-16.4-18.6-15.1-4.8.7-2.8 8 2 7.3 3.7-.5 9 1.7 9.1 6 .1 4.3-4.8 7.4-8.2 8.9-7.7 3.4-16.9 4-25.2 4-16.6 0-33.2-4.3-47.4-13.1-4.1-2.6-7.9 4-3.8 6.6z"/><path d="M648.9 909.4c4.9 0 4.9-7.6 0-7.6s-4.9 7.6 0 7.6zM560.4 594c5.6 28.7 11.2 57.4 15.3 86.4 2 14.3 3.6 28.7 4.6 43 .4 6.4.7 13-.1 19.4-.4 3.4-1.2 6.8-2.3 10-.5 1.4-1.1 2.8-1.8 4.1-.3.5-3.7 3.8-3.7 3.5-.3-4.9-7.9-4.9-7.6 0 .3 5.8 6.7 8.2 11.7 6.2 6.2-2.4 8.7-10.6 10.1-16.5 3.8-16 1-33.5-.8-49.6-4-36.5-11-72.6-18.1-108.6-.9-4.7-8.2-2.7-7.3 2.1z"/><path d="M556.8 592.7c11.1-.2 19.4 7.2 26.1 15.2 8 9.6 15.4 19.7 22.3 30.1 13.3 19.9 24.7 42 27.3 66.2.5 4.8 8.1 4.9 7.6 0-2.9-26.7-15.3-50.9-30.3-72.8-7.4-10.9-15.3-22.1-24.2-31.8-7.6-8.3-17.2-14.6-28.8-14.4-4.9 0-4.9 7.6 0 7.5z"/><path d="M555.9 561.4c27.8 10.1 49.1 33.5 68.5 54.8 20.9 23.1 39.9 50.6 39.8 83 0 4.9 7.6 4.9 7.6 0 0-33.8-19.1-62.8-40.9-87-20.6-23-43.3-47.3-73-58.1-4.6-1.7-6.6 5.7-2 7.3zm72.5 135.9c2.7 11.2-5.7 21-11 30-4.8 8.1-8.3 17.2-5.8 26.7 1.7 6.3 8.2 17.6 16.1 16.9 4.2-.4 6.5-5.1 8.6-8.2 3.3-4.8 6.3-9.8 9.3-14.8 2.5-4.2-4.1-8.1-6.6-3.8-2.3 4-4.8 8-7.3 11.9-1.2 1.9-2.4 4.1-3.9 5.8-1.7 1.9-1.7 1.1-3.7-.8-5.8-5.7-7-13.9-4.4-21.4 5.4-15.2 20.2-26.5 16-44.2-1.1-4.8-8.4-2.8-7.3 1.9z"/><path d="M640.5 726.9c-2 12-2.5 24.4-.1 36.4 1.7 8.6 7.3 19.8 17.7 19.1 9.8-.7 13.7-15 15.1-22.8 2-11 .7-22-3.7-32.2-1.9-4.5-8.5-.6-6.6 3.8 3.2 7.4 4.3 15.6 3.4 23.6-.5 4.8-3.4 20.5-9.8 19.9-7.4-.7-9-13-9.6-18.6-1-9-.7-18.2.9-27.2.8-4.8-6.5-6.8-7.3-2z"/><path d="M662.1 698.7c6.5 11.5 12.2 23.6 16.1 36.2 1.9 6.2 3.2 12.7 3 19.2-.1 3-.6 6.1-1.6 8.9-.6 1.6-3.8 8-5.7 4-2.1-4.4-8.6-.6-6.6 3.8 2.9 6.2 11.2 6.1 15.5 1.6 5.5-5.7 6.3-15.9 5.8-23.4-1.3-19-10.8-37.8-20-54.2-2.4-4.2-8.9-.4-6.5 3.9zm-144.7-9.8c2.8-5.5 8-9.6 14.2-10.4 4.8-.6 4.8-8.2 0-7.6-8.9 1.1-16.7 6-20.8 14.1-2.2 4.4 4.4 8.2 6.6 3.9z"/><path d="M441 322.3c-3-13.8-14.2-25.4-27.8-28.9L402.7 313c1.8 8.8 3.9 18 9.8 24.7 6 6.7 17.2 9.6 24 3.8 5.2-4.5 6-12.5 4.5-19.2zm195.9-24.1c-.4-5.2-6.8-7.5-13.9-8.5-13.8-1.9-27.2 6.6-30.7 20.1-1.2 4.7-1.2 9.4.9 13.8 5.1 10.8 21 13.1 30.8 6.3 9.9-6.8 13.8-19.8 12.9-31.7z" opacity=".56" fill="#9ad4d0"/></svg>
+ data/AppleTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M447 441.4c-27.5 9.1-49.4 33.8-55.4 62.6-4.4 20.9-.8 42.7 5.6 63 15 47.9 43.2 95.6 83.8 124.2 10.1 7.1 26.1 8.3 36.8 2.3 5.1-2.9 8.9-8.3 14.5-9.9 10.8-3 19.1 8.9 27.9 15.9 20.7 16.5 56.9 1 59.8-25.6 20.8-4.9 37.5-21.7 47.2-41.1 9.6-19.4 13.2-41.4 15.5-63 3.2-29.8 4.1-61.3-8.8-88.2-12.7-26.5-38.7-46-67.4-50.4-13.4-2-27.2-.7-40.1 3.4-10.6 3.4-28.5 21.9-37.4 22.4-9.3.5-25.5-14-35.7-16.7-15.2-4-31.5-3.8-46.3 1.1z" opacity=".7" fill="#db1818"/><path d="M529 420.2c5.9-27.2.6-56.6-14.4-80-5.4.2-10.9.4-16.3.5 12.7 22.3 20.9 47.2 23.6 72.8" opacity=".7" fill="#7d592b"/><path d="M391.9 330.4c-25.1-6.1-52.5-2.5-75.1 10-15.5 8.5-28.4 20.9-41.2 33-4.4 4.2-9.2 9.6-8 15.5.8 3.7 3.7 6.5 6.4 9 10.7 9.8 22 20 35.9 24 8.4 2.4 17.2 2.5 25.9 1.9 32.6-2.2 73.1-13.3 98-35.8 30.6-27.5-13.9-50.8-41.9-57.6z" opacity=".7" fill="#9cc906"/><path d="M467.9 380.9c-18.2-29.8-49.9-50-84.1-56.1-16.9-3-34.3-2.8-51 1.4-18.5 4.6-35.3 14.2-50 26.1-17.7 14.3-32.1 32.2-44.9 50.9-2.7 4 3.8 7.8 6.5 3.8 20.7-30.5 47.7-60.2 83.8-71.7 31.2-10 66.1-4.8 94.1 11.5 15.9 9.2 29.4 22.1 39 37.8 2.6 4.2 9.1.4 6.6-3.7z"/><path d="M258.1 408c42.9 32.7 104.9 37.4 152.3 11.6 15.9-8.6 29.6-20.8 45.5-29.5 1.8-1 2.3-3.4 1.4-5.2-17.8-33.3-64.5-23.2-94.7-20.4-4.8.5-4.8 8 0 7.5 17-1.6 34.5-4.5 51.6-3.4 14.4 1 29.5 6.6 36.6 20 .5-1.7.9-3.4 1.4-5.2-13.5 7.4-25.4 17.2-38.4 25.4-11.2 7-23.3 12.2-36.1 15.4-25.1 6.4-51.9 5.5-76.5-2.4-14.1-4.5-27.4-11.5-39.2-20.5-4-2.8-7.7 3.7-3.9 6.7z"/><path d="M449.8 378.9c6 1.5 10.5 5.6 14.9 9.9 4.8 4.6 9.5 9.2 14.2 13.9 9.6 9.5 19 19.2 28.3 29.1 3.3 3.5 8.7-1.8 5.3-5.3-10-10.6-20.2-21.1-30.5-31.3-8.7-8.5-17.9-20.3-30.2-23.4-4.7-1.3-6.7 5.9-2 7.1zm77.8 37.9c-4.1-14.3-9-28.4-14.7-42.2-4.2-10.3-8.3-23.8-19.2-28.8-2.2-1-4.9-.3-5.5 2.2-1 3.8 1.6 7.5 5.6 7.3 4.8-.2 4.9-7.8 0-7.5.5.8 1.1 1.5 1.6 2.3-1.9.8-3.7 1.5-5.5 2.2 4.9 2.2 7.6 6.4 10 11 2.9 5.7 5.2 11.7 7.6 17.6 4.9 12.4 9.2 25 12.9 37.8 1.2 4.7 8.5 2.8 7.2-1.9z"/><path d="M490.1 344.1c4.3-10.5 19.3-8.3 27.2-3.9.6.4 2.2 1 2.4 1.7.3.8-1.6 2.6-2 3.1-1.6 2-3.4 3.9-5.3 5.7-3.9 3.7-8.1 6.9-12.7 9.6-4.2 2.5-.4 9 3.8 6.5 8.2-4.9 34.4-23.1 18.5-32.7-12.8-7.7-32.8-7.9-39.2 7.8-1.8 4.7 5.5 6.6 7.3 2.2z"/><path d="M516.2 343.6c15.3 26.1 18.5 58.1 8.6 86.7-1.6 4.6 5.7 6.6 7.3 2 10.4-30.5 6.9-64.8-9.4-92.5-2.5-4.2-9-.4-6.5 3.8zm-1.8 102.3c-15.2-7.5-30.6-14.4-47.8-15.3-14.5-.7-29 2.4-42.1 8.4-28.9 13.1-47.5 39.8-51.5 71-4.8 36.9 9.4 72.5 27.2 104 9.8 17.3 20.6 34 32.2 50.2 9.9 13.8 20.5 27.5 33.9 38 13.3 10.4 29.2 17.1 46.3 16.1 15.3-.9 29.9-7.6 38.3-20.8 2.6-4.1-3.9-7.9-6.5-3.8-6.9 10.8-19.3 16.3-31.8 17-14.1.8-27.1-4-38.5-12.1-12.6-8.9-22.6-21.1-31.7-33.4-10.7-14.5-20.7-29.6-30-45.1-17.3-28.9-32.9-60.7-33-95.1-.1-30.4 13-58.6 39.4-74.6 12.6-7.6 27.1-12 41.8-12.3 18-.4 33.9 6.5 49.8 14.3 4.5 2.1 8.3-4.4 4-6.5z"/><path d="M530 688.4c12.7 8.3 21.5 22.8 37.2 26.2 17.1 3.7 33.6-5.6 47.6-14.3 4.1-2.5.3-9.1-3.8-6.5-12.8 7.9-28.9 17.7-44.5 12.8-13.1-4.2-21.5-17.3-32.7-24.7-4.1-2.7-7.9 3.8-3.8 6.5zm7.8-233.1c10.5-22.7 39.3-30.4 62.4-29.7 23.6.8 47.1 10.5 63.8 27.4 17.9 18 26.5 43.2 29.1 68 2.7 26.6 0 54.4-6.5 80.3-7 28-23.5 57.4-54.3 62.9-6.4 1.2-3.7 10.8 2.7 9.7 28.8-5.2 48.1-30.2 57.3-56.5 5.2-14.8 7.8-30.4 9.8-45.9 1.8-14.1 2.5-28.5 1.7-42.7-1.6-28.2-9.5-56.4-28.1-78.2-17-20-42.2-32-68.1-34.8-28.2-3-65.4 6-78.3 34.1-2.9 6.2 5.8 11.3 8.5 5.4z"/></svg>
+ data/AustronautTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st3{opacity:.7;fill:#bfd3e0}</style><path d="M344 566.8c.9 34.7 5.1 69.2 12.7 103 2.5 11.3 6.5 23.9 17 28.6 10.5 4.7 25.7-8 18.6-17 5.6 1.1 11.3 2.2 17 3.3 2-11.2 4-22.5 6-33.8 5.3-1.9 10.6-3.7 15.8-5.6 8.1 61.1 8 123.3-.3 184.4-11.1-9.9-31.1 1-32.6 15.8s10.7 28.3 24.7 33.4 29.4 3.8 44.3 2.5c12.7-1.1 26.6-2.8 35.4-12 11.6-12 9.7-31 8.3-47.6-3-37.6 1.1-75.7 12.1-111.8 23.6 49.3 25.6 105.8 27.1 160.5 30.2 9.7 63.3 9.8 93.6.4 4.5-17.4-5.5-34.9-13.3-51.1-24.9-51.5-30.3-112.3-14.8-167.4 2.4 6.2 4.9 12.5 7.3 18.7 5.1 1.7 10.6 2.2 16 1.5-6.8 8.6 8 20.6 17.8 15.6s12.8-17.4 13.9-28.3c4.9-45.9-3.3-92-12.6-137.2-3.4-16.8-7.4-34.2-18.4-47.3s-31.3-20-45.7-10.7c3.8-13-5.5-26.9-17.6-33-12.1-6.1-26.2-6.3-39.7-6.3-25.9-.1-62.4-7-86 5.4-16.4 8.6-24.8 25.7-42.3 34-47.8 22.7-65.9 44.1-64.3 102z" opacity=".7" fill="#f5fcff"/><path d="M326.8 242.5c-14.1 56.1 7 117.7 46.8 159.8 11.4 12 24.3 22.7 39.2 29.9 27.5 13.1 59.2 13 89.6 12.5 51-.7 108.1-4 142.7-41.4C671.6 374.7 677.8 333 680 294c1.6-28.2 1.5-57.4-8.9-83.7-53.8-136.2-310.2-103.9-344.3 32.2z" fill="#f5fcff"/><path d="M391.8 378.3c5 6.5 10.9 12.5 18.7 16.1 8.5 3.9 18.3 4.4 27.8 4.9 26.1 1.2 52.3 2.4 78.4 3.6 28.3 1.3 59.3 1.9 81.6-14 23.4-16.6 29.6-46.1 31.3-73 1.4-22.8.8-45.8-4.5-68.1-4.3-18.5-13-37.7-30.9-47.4-41.5-22.5-159.6-36.6-199.5-2.1-44.6 38.6-34.9 138.3-2.9 180z" opacity=".7" fill="#2b2f50"/><path class="st3" d="M464.6 545.1c7.3-7 20.4-6.3 26.9 1.3 6.6 7.6 5.2 20.7-2.8 26.8-3.9 3-8.8 4.3-13.6 5.6-5 1.3-10.1 2.6-15.1 3.9-4-20-17.9-37.7-36.4-46.3-4.5-6 4.2-14.6 11.4-12.8s11.5 9.2 14.3 16.2c2.9 7.2 5.3 14.8 10.6 20.5 5.3 5.6 14.8 8.3 20.8 3.5m74 31.9c-4.1 5.7-11.1 9.1-18 8.8-8.9-7.1-8.7-23.5 1.3-29 10-5.6 24.8 5 21.5 15.9 3.3-5.2 11.9-3.1 15.8 1.8 3.8 4.8 5.1 11.3 8.7 16.4 5.9 8.4 18.1 11.5 27.3 7 2.7 6.2 5.1 14 .7 19.1-5.7 6.7-17.1 1.8-22-5.5-5-7.2-7.3-16.5-14.2-21.9-5.2-4-12-5.1-18.3-6.6s-13.1-4-16.5-9.6c-3.4-5.6-.9-14.8 5.6-15.6"/><path d="M538 776.2c26 2.4 52.7-2.9 75.9-14.9 11.1 1.8 11.6 19.5 3 26.7s-20.9 7.3-32.1 8.4c-14.9 1.5-29.6 5.4-43.3 11.6 3.1-9.2 2.8-19.5-.8-28.5M346.2 629.1c13.1-.9 26.2-1.8 39.4-2.8 5.8-.4 11.9-.8 17.1 1.8 5.2 2.6 8.8 9.3 6 14.4-20.7-2.2-41.5-4.4-62.2-6.6m268.3-10.6c13.2-1.6 26.3-3.2 39.5-4.9 3.9-.5 8-.9 11.7.6 3.7 1.5 6.5 5.7 5.1 9.4-15.7 5-33.1 4.3-48.3-1.9" opacity=".7" fill="#d9461c"/><path d="M415.8 433.7c-4.5-2.9-10.3-2.9-15.7-2.4-12.4 1.1-25.1 4.4-34.5 12.5s-14.8 21.8-10.4 33.5c20.8-7.8 41.6-15.6 62.4-23.5l-12.9.6c4.9-2.3 9.7-4.5 14.6-6.8 3.4-4.2 1-11-3.5-13.9zM681 611c-17-88-6.6-106.5-19-157.3-6.4-26.3-11.6-23.6-30.3-20.8-2.8.4-38 12.2-33.2 16.8 7.7 7.4 20.8-.6 30.9 2.8 6.1 2 9.9 7.9 13 13.5 17.1 31.4 23.7 67.2 30.1 102.4 2.5 13.6 4.9 27.2 7.4 40.7.2 1 .6 1.7 1.2 2.3-.1-.2-.1-.3-.1-.4zM503.8 468c-8.6-.1-21.4-3.2-33.2-3.8-4.2-1.5-8.2-4.1-12.1-6.2-6.7-3.5-16.3-5.1-20.9.8-2.5 3.2-2.5 7.5-2.3 11.5.1 3.9.2 7.9.4 11.8 0 1.7.1 3.6 1.2 5 1.5 1.8 4.2 2.1 6.6 2.3 2.8.2 5.6.3 8.5.4 23 9.7 80.4 8 92.6 7.5 14.6-.6 30.3-2.3 41.5-11.5-2-8.1-4.1-16.2-6.1-24.4-25.3 3.4-50.7 6.8-76.2 6.6z" fill="#bfd3e0" opacity=".7"/><path class="st3" d="M417.2 648.1c5.2 9.2 3.4 21.7-4 29.1-3.1 3.1-7 5.3-9.7 8.7-2.7 3.4-3.9 8.7-1 11.9 5.7-1 11.4-2.1 17-3.1 7.7-18.6 6.7-40.6-2.5-58.5m201.4 12.3c-5 10.3-6.5 22.3-4.1 33.4 4.3-.1 8.6-.2 12.9-.2-7-15.1-8.5-32.8-4-48.8-2.6-1.2-5.6-1.4-8.3-.4-1.2 6.9-.9 14.2 1 21"/><path d="M426.5 333.7c20.6-30.8 41.2-61.5 61.8-92.3 1.9-2.9-20.7-17.4-25.3-16.7-8.2 1.4-18.6 24-21.9 30.6-12.4 24.1-17.7 51.6-14.6 78.4zm127-112l-44.7 94.8c4.7 2.5 10.8 0 14.1-4.2 3.3-4.2 4.5-9.6 6-14.7 9.1-31.9 29.6-59.2 49.7-85.7-2 2.5-4.1 5-6.1 7.4" opacity=".7" fill="#7a9be3"/><path d="M405.7 434.2c-34.2-14.1-60-44.2-73.1-78.3-7.4-19.2-11.2-39.6-12-60.1-.8-21.1 1.4-42.6 8.5-62.6 11.5-32.8 36.3-59.7 65.7-77.5 33.8-20.4 73.6-28.1 112.6-27.4 20.6.4 41.3 2.8 61.4 7.5 19 4.4 37.6 11.1 54 21.8 30.5 19.8 50.1 52.8 58.3 87.8 9.5 40.7 3.3 83.6-10.3 122.6-6.4 18.2-14.7 36.2-27.9 50.5-12.6 13.7-28.8 23.4-45.7 30.8-11.8 5.1-23.5 9.6-36.3 10.9-12.7 1.3-25.5 1.6-38.2 1.7-12.6 0-25.3-.2-37.8-1.4-4.7-.5-9.2-1.2-13.8-2.4-10.9-2.9-21.8-5.8-32.7-8.8-10.5-2.9-20.9-5.9-31.3-8.9-3.8-1.1-5.5 4.9-1.6 6 22.2 6.5 44.5 13 67 18.5 10.5 2.5 21.7 2.7 32.4 3 14.2.4 28.4.3 42.6-.5 10.3-.5 21.2-1 31.1-4.3 18.2-6.1 36.3-13.8 51.9-25.2 16.2-11.8 28.3-27.2 37-45.1 9.1-18.8 15.4-39.3 19.6-59.7 4.4-21.4 6.1-43.4 4-65.2-3.5-37.2-18.6-74.1-45.8-100.2-29.5-28.4-70.6-39.2-110.2-43.6-41.9-4.6-85.6-.8-124.4 16.6-32.3 14.5-60.9 38.8-78 70-20.1 36.4-22.4 81.3-13.7 121.4 8.3 38 29.1 73.3 61.4 95.6 7.4 5.1 15.4 9.3 23.7 12.8 3.6 1.2 5.2-4.8 1.6-6.3z"/><path d="M428.2 182.1c-27.6-1-49.9 19.5-59.9 43.8-11.8 28.6-9.4 60.9-7.6 91 1.5 24.5 4.5 51.1 20.9 70.6 18.3 21.7 49 25.8 75.5 28.9 32.5 3.7 65.4 3.6 97.9-.2 24.3-2.9 54.4-6.8 68.6-29.5 7.2-11.6 8.7-25.6 9.5-38.9 1-16.6 1.5-33.2 1.7-49.9.4-29.7 1.9-62.9-12.8-89.8-6.7-12.3-17-20.4-30.2-24.9-14.3-4.8-29.9-7-44.9-8.8-31.9-3.9-64.3-3.4-96.1 1.3-7.8 1.1-15.5 2.6-23.2 4.2-3.9.8-2.2 6.8 1.6 6 29.6-6.4 60-9 90.2-7.6 15.2.7 30.3 2.3 45.3 5 13.1 2.3 27.6 4.6 38.7 12.4 11 7.8 16.7 21 20.1 33.7 3.8 14.1 4.7 28.8 4.9 43.3.2 15.4 0 30.8-.5 46.2-.5 14.4-.4 29.3-2.7 43.5-2 12.6-7 24.3-17.5 32-9.6 7-21.5 10.3-33 12.5-29.4 5.6-60 6.8-89.9 5.4-15.2-.7-30.5-2.2-45.5-4.7-12.7-2.1-25.5-5-36.9-11.2-22.4-12.2-30.9-36-34-60-1.7-12.9-2.2-26-2.8-39-.6-15.1-.8-30.5 1.6-45.4 4.1-25.6 16.9-52 42.8-61.2 5.8-2.1 11.8-3 17.9-2.8 4.3.4 4.3-5.8.3-5.9z"/><path d="M456.9 220.6c-22.7 34.1-40.4 71.6-52.2 110.8-1.2 3.8 4.8 5.5 6 1.6 11.8-38.8 29.2-75.6 51.6-109.3 2.2-3.3-3.2-6.4-5.4-3.1zm52.5 17.2a710.82 710.82 0 0 0-46.7 99.1c-1.4 3.7 4.6 5.3 6 1.6 12.8-33.7 28.3-66.3 46.1-97.7 1.9-3.3-3.4-6.4-5.4-3zm32.5 46.7c-2.6 9.7-5.9 19.1-10 28.3-1.6 3.6 3.8 6.8 5.3 3.1 4.2-9.7 7.8-19.6 10.6-29.8 1.1-3.8-4.8-5.4-5.9-1.6zM426.6 447c-.7 5-1.5 10-2.2 15-.7 4.5-2.2 9.7-1.7 14.2.9 7.8 11.9 11 18.1 13.5 16.7 6.6 35.1 8.8 52.9 7 3.9-.4 4-6.6 0-6.2-15.4 1.6-31 .1-45.8-4.8-3.6-1.2-7.2-2.6-10.7-4.2-3.1-1.4-8.4-3.1-8.4-7.1 0-4.2 1.2-8.6 1.8-12.7.6-4.4 1.3-8.7 1.9-13 .6-3.9-5.3-5.6-5.9-1.7zm159.7 2.8c2.1 6.6 4.3 13.2 6.4 19.8 1 3 2.7 6.8.7 9.7-1.6 2.5-5 3.9-7.6 5.1-12.4 5.7-26.1 8.2-39.6 8-4 0-4 6.1 0 6.2 15.5.2 32-2.8 45.7-10.3 6.2-3.4 9.8-8.5 8.2-15.7-1.8-8.3-5.2-16.5-7.8-24.5-1.2-3.7-7.2-2.1-6 1.7z"/><path d="M422.5 454.6c-19.7 4.1-40.5 9.4-56.9 21.8-7.8 5.9-14.3 13.5-18.2 22.5-5 11.4-6 24-7 36.3-2.1 26.9-2.9 54-.3 80.8 1.2 13.2 3.3 26.3 6.4 39.2 2.8 11.8 6.1 24.5 12.2 35.2 6.1 10.5 17.4 19.1 30.1 16.7 10.3-2 18.3-13.6 14.2-23.7-1.5-3.6-7.5-2-6 1.7 3.9 9.4-5.9 17.5-14.9 16.1-11.1-1.7-17.9-11.8-21.8-21.4-8.7-21.7-12.7-45.6-14.6-68.8-1.9-23.9-1.3-48 .5-71.9.8-11.2 1.4-22.6 5-33.3 3-9 8.6-16.6 15.8-22.7 15.8-13.2 37.3-18.3 57-22.5 4-.8 2.4-6.8-1.5-6z"/><path d="M411.5 574.6c-1.6 12.7-.5 25.4 1.5 38 1 6.4 2.3 12.8 3.6 19.2 1.1 5.3 2.4 10.6 5 15.4 5.9 10.9 17.6 14.5 29.1 16.6 13.3 2.5 26.8 3.2 40.3 2.9 15.7-.4 31.4-2.2 47-3.9 3.9-.5 4-6.7 0-6.2-25.2 2.9-50.9 5.8-76.2 2.7-10.8-1.3-25.6-2.8-32.8-12-3.2-4.2-4.7-9.4-5.9-14.4-1.3-5.8-2.5-11.7-3.5-17.7-2.3-13.4-3.7-27.1-1.9-40.6.5-4-5.7-3.9-6.2 0zm166.6 83.6c9-.3 18.7-1.1 26.8-5.4 3.9-2.1 7.3-5.2 9.5-9 2.8-4.9 3.2-10.5 3.9-16 3.2-26.8 6.1-53.9 1.5-80.7-2.5-14.8-7.3-29.1-12-43.3-1.2-3.8-7.2-2.1-6 1.6 3.8 11.5 7.7 23.1 10.4 34.9 2.8 12.2 3.9 24.5 3.9 37 0 12.4-1 24.7-2.4 37-.7 6-1.2 12.1-2.1 18.1-.7 4.8-2.2 9.3-6.1 12.6-7.2 6.2-18.2 6.7-27.3 7-4.1.1-4.1 6.3-.1 6.2z"/><path d="M615.2 608.2c-4.1 4.3-5 10.1-2 15.4 3.4 5.9 10.2 9.1 16.5 11 16 4.6 32.9 1.6 49-1.2 3.9-.7 2.3-6.7-1.7-6-12.8 2.3-25.9 4.6-38.9 2.7-5.4-.8-11.1-2.2-15.7-5.4-4.1-2.9-6.8-7.8-2.9-12 2.8-3-1.6-7.4-4.3-4.5z"/><path d="M595 458.9c7.1-5 16.1-3.5 23.7-.2 8.2 3.5 15.7 9 21.3 16 6.1 7.6 10 16.8 13.1 26 3.5 10.1 6.4 20.5 9 30.9 5.5 21.7 9.4 43.9 11.6 66.2 1.1 11.3 1.8 22.6 2.1 34 .2 9.2.1 18.5-1.5 27.6-1.7 9.9-5.2 19.8-12 27.5-3.3 3.8-7.7 7.3-12.8 8.1-4.5.7-10.1-1.2-11.8-5.8-1.4-3.7-7.4-2.1-6 1.7 3.4 8.7 13.3 12.3 22 9.5 9.4-3.1 16.4-11.8 20.7-20.5 9.5-19.5 8.2-42.7 7-63.7-1.5-25.3-5.1-50.5-10.7-75.3-2.8-12.4-6.1-24.8-10-36.9-3.2-10.2-7.1-20.5-13.2-29.3-6.5-9.4-15.6-16.8-26-21.3-9.4-4-20.7-5.8-29.5.4-3.4 2-.3 7.4 3 5.1z"/><path d="M624.9 637.1c-4.7 7.9-6.5 17.1-5.1 26.2 1.1 7.4 5.4 16.1 13.5 17.7 8.9 1.8 14.3-6.8 17.3-13.8 3.9-9 5.7-18.8 5.2-28.6-.2-4-6.4-4-6.2 0 .3 7.4-.6 14.7-3 21.7-1.6 4.7-5.1 15.2-11.7 14.7-6.2-.5-8.8-9.2-9.3-14.2-.8-7.2.9-14.3 4.6-20.6 2.1-3.4-3.2-6.5-5.3-3.1zm-280 4.1c19.4 9.8 41.5 12.9 62.9 8.7 3.9-.8 2.2-6.7-1.6-6-19.7 3.8-40.2 1-58.1-8.1-3.7-1.7-6.8 3.7-3.2 5.4zm72.7-107.7c4.4-2.4 9.4.5 12.4 3.9 3.4 3.8 5.1 8.9 6.5 13.7 2.7 9.3 4.2 19.1 10.2 27 5.1 6.7 12.8 10.6 21.2 9 7.8-1.4 14.3-7 16.8-14.5 1.2-3.8-4.7-5.4-6-1.7-2.4 7.2-10.7 11.8-18.1 9.9-8.8-2.3-12.9-12.1-15.1-19.9-2.5-8.9-3.9-18.9-9.8-26.4-5-6.3-13.6-10.5-21.2-6.4-3.5 2-.4 7.4 3.1 5.4z"/><path d="M431.2 522.6c4.2-3.8 10.6-.8 13.9 2.7 4.6 5 5.4 12.7 7 19.1 2.7 11 9.9 23.5 23 21.7 3.9-.5 2.3-6.5-1.6-6-6.7.9-11.8-6.2-13.8-11.7-2.5-6.8-3-14.2-6-20.9-4.3-9.7-17.6-17.8-26.9-9.3-2.9 2.7 1.5 7.1 4.4 4.4z"/><path d="M472 564c6.6-1.5 9.6 6.5 4.8 10.6-3.1 2.6 1.3 6.9 4.4 4.4 4.2-3.5 5.7-9.9 3.1-14.9s-8.5-7.3-13.9-6.1c-3.9.9-2.3 6.8 1.6 6z"/><path d="M469.5 559.9c-3.9-6.4.6-14.9 7.4-17.1s14.6 1.1 18.8 6.6c4.7 6.3 3.7 15-.3 21.4-3.3 5.3-13.3 13.3-19.2 7-2.7-2.9-7.1 1.5-4.4 4.4 6.1 6.6 16.2 3.9 22.5-1 6.8-5.3 11.1-14 10.8-22.7-.7-16.2-20.4-29.1-34.8-19.2-7.5 5.2-11 15.8-6 23.8 1.9 3.3 7.2.2 5.2-3.2zm77.2-23.7c9.2-4.2 17.6 5.2 20.1 13 3.3 10.4 2.7 22.2 3.3 33 .2 4 6.4 4 6.2 0-.4-7.3-.7-14.6-1.3-21.9-.6-6.5-1.6-13-4.7-18.8-5-9.4-16.5-15.5-26.7-10.7-3.6 1.8-.5 7.1 3.1 5.4zm-87 53.8c.8 6.5 1.5 13.1 2.3 19.7.6 4.9.4 10.8 4.6 14.2 4.2 3.3 10.9 4.4 16 5.6 6.2 1.5 12.6 2.5 19 3 12.4 1 25.1.2 37.2-2.6 9.1-2.1 18.2-6.2 21.9-15.4 1.5-3.7-4.5-5.3-6-1.7-3.1 7.9-13 10.3-20.5 11.7-10.3 2-20.9 2.6-31.4 1.9-10.1-.7-21.1-2.4-30.5-6.3-4.7-2-4-8.6-4.5-13-.7-5.7-1.3-11.3-2-17-.4-4-6.6-4.1-6.1-.1z"/><path d="M611.7 614.8c-12.2 10.2-22.6-5.6-28-14.7-5.3-9.1-13.9-20.4-25.9-18.7-5.2.8-10 4.7-9.5 10.3.6 6 6.8 9.1 10.7 12.8 9.4 9 13.8 22 23.9 30.5 9.2 7.7 24.8 10.9 33.2.2 2.4-3.1-1.9-7.5-4.4-4.4-7 9-19.5 4.8-26.4-2-8.1-8-12.5-18.8-20.3-27.1-1.8-2-3.9-3.6-6-5.3-1.7-1.4-5-3.6-4.4-6.1.6-2.6 4.3-3 6.5-2.8 2.7.3 5.2 1.6 7.3 3.2 8 6.2 11.4 16.6 17.8 24.3 7.7 9.2 20.1 12.4 29.9 4.2 3-2.6-1.4-7-4.4-4.4z"/><path d="M561.7 587.5c4.5-7.7 1.3-18.1-6.6-22.2-9.1-4.7-20.4-.3-25.5 8.2-5 8.5-4.4 20 1.5 27.8 6 8 17.6 11.1 25.9 4.7 3.1-2.4 0-7.8-3.1-5.3-5.7 4.4-13.5 2.8-17.8-2.9-4.1-5.4-4.8-13.2-2.1-19.3 2.7-6.2 9.6-10.5 16.4-8.4 5.9 1.8 9.1 8.9 5.9 14.3-2 3.4 3.4 6.5 5.4 3.1zm-136.1 63.9c.4 3.8.7 7.7 1.1 11.5.3 3.3.1 7 1.1 10.2.8 2.7 3.1 4 5.8 4.3 4 .5 8.3.1 12.4 0 16.4-.1 32.9-.4 49.3-.8 33.1-.8 66.2-2 99.2-3.8 4.5-.2 9.1-.4 13.7-.8 2.8-.2 5.5-.9 6.5-3.8.6-1.6.4-3.5.5-5.1.1-2.5.2-4.9.3-7.4.2-4.7.3-9.4.5-14.1.2-4-6-4-6.2 0-.3 7.2-.5 14.3-.8 21.5 0 .4.1 2.5-.1 2.7-.1.1 3.6-2.5-.8 0-1 .6-3.5.2-4.8.3-3.9.2-7.8.4-11.6.6-14.4.8-28.7 1.4-43.1 2-29 1.1-58 1.9-87 2.3-8.2.1-16.4.2-24.7.2-.6 0-1.3.1-1.9 0-1.6-.3-1.4-.7-1.7-2-.5-1.8-.4-3.9-.5-5.8-.4-4.1-.8-8.1-1.1-12.2-.3-3.7-6.5-3.7-6.1.2z"/><path d="M427.3 675.9c-3.7 19.8-2.6 40.1 3.5 59.3 1.2 3.8 7.2 2.2 6-1.7-5.8-18.1-7-37.3-3.5-56 .7-3.8-5.3-5.5-6-1.6zm178.3-4.7c3.5 19.7 6.8 39.6 5.9 59.7-.2 4 6 4 6.2 0 1-20.7-2.5-41.1-6.1-61.3-.7-3.9-6.7-2.3-6 1.6zM518.1 714c-4.4 23.2-5.1 47-2 70.4.5 3.9 6.7 4 6.2 0-3-22.9-2.5-46.1 1.8-68.8.7-3.8-5.3-5.5-6-1.6zm-90.7 77.1v35.5c0 4 6.2 4 6.2 0v-35.5c0-4-6.2-4-6.2 0z"/><path d="M457.4 836.4c-9.9-4.7-19.8-10.2-30.4-13.3-8.8-2.6-18.6-2.7-25.9 3.5-6.6 5.6-8.8 14.5-9.4 22.8-.8 10.7.4 22 3.3 32.3 1.1 3.8 7.1 2.2 6-1.7-2.6-9.1-3.5-18.7-3.2-28.2.3-7.1 1.6-15.2 7-20.2 6.3-5.7 15.3-4.3 22.7-1.8 9.2 3.1 18 7.9 26.8 12 3.6 1.6 6.7-3.7 3.1-5.4zm40.6-56.8l13.8 3.9c2.8.8 2.3 1.1 2.5 4 .1 2.4.2 4.9.3 7.3.3 9.1.1 18.1-.4 27.2-1 18.5-3.7 36.9-8 54.9-.9 3.9 5.1 5.5 6 1.7 4.7-20.1 7.5-40.6 8.4-61.2.4-10.2.3-20.3-.2-30.5-.2-4.3-.6-7.3-5-8.8-5.2-1.7-10.5-3-15.8-4.5-3.8-1.1-5.4 4.9-1.6 6z"/><path d="M400.3 883c36.8.7 73.7-.5 110.4-3.6 3.9-.3 4-6.5 0-6.2-36.7 3.1-73.6 4.3-110.4 3.6-4 0-4 6.2 0 6.2zm119-169.2c1.5 14.4 4.1 28.7 8.1 42.7 2 6.8 4.2 13.6 6.8 20.2 1.7 4.2 6.1 9.8 11 6.4 3.3-2.2.2-7.6-3.1-5.3-.9.6-5.6-13-6-14.3-1.7-5.3-3.3-10.7-4.7-16.1-2.8-11-4.7-22.2-5.9-33.5-.4-4.1-6.6-4.1-6.2-.1z"/><path d="M533.4 776.7c1.1 26.4 3.7 52.7 7.7 78.8 1 6.7 2.2 13.3 3.4 20 1 5.3 2.4 9.2 8.3 10 12.9 1.8 26.2 1.6 39.1.8 15-.9 30-2.9 44.9-4.9 3.9-.5 4-6.7 0-6.2-24.2 3.2-48.6 6.5-73 5-2.9-.2-5.8-.4-8.7-.7-1.5-.2-2.8-.1-3.6-1.5-.7-1.2-.7-3-.9-4.3-1.1-6.2-2.2-12.4-3.2-18.7-1.9-12.2-3.5-24.4-4.7-36.7-1.4-13.9-2.4-27.8-3-41.8-.3-3.8-6.5-3.8-6.3.2z"/><path d="M582.4 843.1c8.4-7.3 18.4-12.7 29.2-15.7 9.4-2.6 23.5-5.8 30 3.8 5.8 8.5 5.4 21.2 5.5 31 0 2.7.8 7.3-.6 9.6-1.2 1.9-4.7 2.5-6.7 3-6.5 1.8-13.2 2.9-20 3.4-4 .3-4 6.5 0 6.2 6-.4 12-1.2 17.8-2.6 4.5-1 10.4-2 13.5-5.8 3.2-4 2.2-10.9 2.2-15.7-.1-5.7-.4-11.4-1.2-17-1.2-8.3-4.3-17.5-12.1-21.9-9-5-21.2-2.5-30.5.2-11.6 3.3-22.2 9.2-31.3 17.1-3.2 2.6 1.2 7 4.2 4.4z"/><path d="M619.2 766c.6 19.2 4.1 38.2 10.6 56.3 1.3 3.7 7.3 2.1 6-1.7-6.3-17.6-9.8-35.9-10.4-54.6-.1-3.9-6.3-3.9-6.2 0zm-53.3 104.2c27.3.1 54.6-3.2 81.1-9.9 3.9-1 2.2-7-1.7-6-26 6.6-52.7 9.8-79.5 9.7-3.9 0-3.9 6.2.1 6.2zm-169.6-6.3c24.9 2.1 49.9 2.6 74.9 1.6 4-.2 4-6.4 0-6.2-25 1-50 .5-74.9-1.6-3.9-.3-3.9 5.9 0 6.2zm96 2.9c7-.5 14-1 21-1.6 4-.3 4-6.5 0-6.2-7 .5-14 1-21 1.6-3.9.2-4 6.4 0 6.2zM378.9 590.9c10-2.8 20.3-2.1 29.9 1.8 3.7 1.5 5.3-4.5 1.6-6-10.6-4.3-22.2-4.9-33.2-1.8-3.8 1.1-2.2 7.1 1.7 6z"/><path d="M414.3 537.5c-.5 17.2-1.8 34.2-4.1 51.2-.5 3.9 5.7 3.9 6.2 0 2.3-17 3.6-34.1 4.1-51.2.1-4-6.1-4-6.2 0z"/><path d="M410.1 584.8c.5 23.2 1.1 46.4 1.6 69.7.1 4 6.3 4 6.2 0-.5-23.2-1.1-46.4-1.6-69.7-.1-4-6.3-4-6.2 0z"/><path d="M390.4 647c-2.9 8.3-2.5 17.4 1 25.5 3.2 7.1 9.7 15 18.4 13.6 10.2-1.7 9.1-12.5 9-20.4l-.6-34.8c-.1-4-6.3-4-6.2 0 .1 8.4.3 16.8.4 25.3.1 4.3.1 8.7.2 13 0 3 .9 8.1-1.9 10.1-6 4.3-12.3-5.6-14.1-10.1-2.7-6.6-2.7-13.8-.3-20.4 1.4-4-4.6-5.6-5.9-1.8zm16.5-220.3c-9.3.5-18.6 1.8-27.6 3.8-4.4 1-8.8 2.2-13.1 3.5-3.7 1.2-7.4 2.5-10.1 5.4-5.5 5.9-7.5 15.5-8.8 23.2-1.6 9.1-2 18.3-2.4 27.5-.2 4 6 4 6.2 0 .3-8 .6-16 1.8-23.9.6-4 1.5-7.9 2.6-11.7 1.1-3.6 2.3-7.8 4.9-10.6 2.5-2.7 6.4-3.5 9.8-4.5 3.9-1.2 7.9-2.2 11.9-3 8.2-1.8 16.4-2.9 24.7-3.3 4.1-.4 4.1-6.6.1-6.4zM398.2 699c8.9 1.8 17.9 2.7 27 2.5 4 0 4-6.2 0-6.2-8.5.1-17-.6-25.4-2.3-3.8-.7-5.5 5.2-1.6 6zm232-17.7c-1.8 5.3-.2 11.5 4.2 15.1 3 2.5 7.5-1.8 4.4-4.4-2.8-2.3-3.8-5.7-2.6-9.1 1.3-3.7-4.7-5.3-6-1.6z"/><path d="M614.5 689.3c5.6-.7 11.1-1.7 16.5-3.3 3.8-1.1 2.2-7.1-1.7-6-4.9 1.4-9.8 2.5-14.8 3.1-3.9.5-3.9 6.7 0 6.2zm9.6-110.7c6.5-3.2 13.5-4.4 20.6-3.9 4 .3 4-5.9 0-6.2-8.3-.6-16.3 1.1-23.8 4.7-3.5 1.8-.4 7.1 3.2 5.4zM426.8 728.4c-2.1 22.6-1.4 45.2 2 67.6.2 1.6 2.4 2.6 3.8 2.2 9-3 18.3-3.9 27.8-2.9 4 .4 3.9-5.8 0-6.2-10-1.1-19.9 0-29.4 3.1 1.3.7 2.5 1.4 3.8 2.2-3.3-21.8-3.8-44-1.8-66 .3-3.9-5.9-3.9-6.2 0z"/><path d="M607.2 688.1l6.9 52.8c.6 4.3 1.1 8.6 1.7 12.8.5 3.8 2 8-1.1 10.8-5.9 5.4-13.1 9.8-20.2 13.6-3.5 1.9-.4 7.2 3.1 5.3 7.4-4 14.6-8.7 21-14.2 6.8-5.8 3.3-15.3 2.3-23-2.5-19.4-5.1-38.8-7.6-58.2-.4-3.8-6.6-3.9-6.1.1zM469.4 540.9c2.1-8.6 16.4-8 23-8.3 11.6-.5 23.2 0 34.6 1.6 3.9.5 5.6-5.4 1.7-6-13.8-1.9-27.6-2.5-41.5-1.5-8.9.6-21.2 2.1-23.7 12.5-1 3.9 5 5.5 5.9 1.7zm192.4 25.9h7.9c4 0 4-6.2 0-6.2h-7.9c-4 .1-4 6.2 0 6.2zm-22.2-130.6c5.2-4.9 13.5-2 17.7 2.8 5.8 6.5 5.9 16.5 6.1 24.8.4 20.2.6 40.4.9 60.6.1 4 6.2 4 6.2 0-.2-12.2-.4-24.3-.5-36.5-.2-11.4.4-23.1-.9-34.5-1.1-9-4.3-18.1-12.5-22.9-6.8-3.9-15.4-4.2-21.3 1.4-3 2.7 1.4 7.1 4.3 4.3z"/></svg>
+ data/BabyTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st2{fill:#fbdfc5}.st3{fill:#ffc0a8}</style><g opacity=".7"><path d="M461.3 723.3c-7.4-6.1-15.5-13.7-14.8-23.2.5-6.4 5.2-12 10.9-15s12.3-4 18.7-4.5c13.2-1 26.6-.4 39.7 1.8 7.5 1.3 15.1 3.1 21.6 7.1s11.8 10.5 12.9 18c1.3 9.2-3.5 18-8.3 26-3.7 6.2-7.6 12.7-13.9 16.4-8.5 5-19.2 3.5-29 1.8-3.1 4-2 10 .4 14.5s5.9 8.6 7.3 13.5c2.3 8.3-2.5 17.9-10.4 21.2s-17.9.5-23.1-6.4c-5.2-6.9-5.4-17-.8-24.3" fill="#eef6f7"/><path class="st2" d="M417.2 298.6c47.1-32.9 122.9-28 167.6 8.2s54.2 100.7 31.7 153.6c5.7-5.9 16.9-1.4 19.5 6.4 2.6 7.8-1 16.3-5.9 22.9s-11.3 12-15.5 19c-8 13.4-7.1 30.3-13.5 44.5-7.1 15.7-22.5 26.5-39 31.6-16.5 5.1-34 5.3-51.3 4.9-30.6-.7-62.2-3.3-89.3-17.5-27.1-14.2-48.7-42.8-46.1-73.3-12.9 6.1-30.3-2.2-33.7-16-5.4-21.6 18.4-22.7 23.1-37.9 4.2-13.5-4.8-38-2.6-53.7 4.9-36.6 24.6-71.4 55-92.7z"/><path class="st2" d="M396.9 694.2c-10.7-19.5-39.8-25.6-57.5-12.1-17.6 13.5-19.3 43.3-3.2 58.6-5.3 1.6-10.5 3.2-15.8 4.8-3.8 5.3-.5 14.2 6 15.5-9.7 15.5 6.8 36.5 25 38.3s35-8.5 50.3-18.5c9.9 6 24 3.3 31.1-5.9 3.4 5.2 3.7 12.3.8 17.7 9.5-7.5 22.1-10.8 34-9 9.2-9.7 10.1-26.2 2-36.9-7.2-9.5-19.8-13.9-26.4-23.8-11.1-16.5.6-40.4 18.4-49.2s38.7-6.9 58.5-4.8c19 2 42.4 7.8 46.2 26.5 1.7 8.5-1.6 17.3-5.6 25-10.4 19.8-26 36.9-44.9 48.9-4.8 4.3-2.7 13.8 3.5 15.5-7.9.9-6.7 14.5.7 17.5s15.6-.8 22.9-4.1c7.3-3.3 16.3-6 22.8-1.4 1.1-10 2.1-20 3.2-30 1.5 9.5 12.9 14.6 22.3 12.8s17.1-8.4 24.2-14.8c10.2 17.4 31.7 27.3 51.5 23.9s36.7-20.2 40.3-40c-3.7-7.8-7.3-15.7-11-23.5-3.5-7.5-7.8-15.7-15.5-18.6s-18.7 4.4-15.5 12.1c2.2-22.2-22.7-42.3-43.9-35.4-11.5-40.1-25.6-83.7-60.8-105.9-36.3-22.9-94-17-129.9 5.1-27.6 17.2-50.4 81.2-33.7 111.7z"/><path class="st3" d="M642.4 678.6c6.5-.4 11.8 7.6 8.9 13.4s-12.5 6.4-16.1 1c-3.5-5.5.7-14 7.2-14.4m-286.5 84.5c-5.8-.6-9.9 6.9-7.7 12.3s8.3 8.2 14.1 8.7c6.8.6 15.1-3 15.5-9.8.2-4.3-3.1-8.2-7-10s-8.4-2-12.7-2.2"/><path d="M468.8 539.2c1.8 6.6 8.5 11.5 15.4 11.3 6.9-.2 13.2-5.6 14.6-12.3" fill="#f28383"/><path d="M480.4 240.6c9.1 5.8-6 24 3.2 29.5 5.5 3.3 11.8-3.9 12.7-10.2 2.1-14.7-9.2-30-23.8-32.5" fill="#d47e3f"/><path d="M398 506.6c-3.9 1.3-4.1 7.2-1.3 10.1 2.8 2.9 7.1 3.6 11.2 4.2 4.8.7 10.7.9 13.5-3.1 3.1-4.6-1-11.3-6.4-12.8s-11 .5-16.2 2.5m161.9 5.8c-5.8-1-10.5 6.3-8.5 11.8 2 5.5 8.6 8.3 14.4 7.8 8.1-.7 15.8-7.8 15.2-16-.7-8.1-11.7-13.9-17.8-8.5" fill="#ffc2c2"/><path class="st3" d="M655.7 763.4c.8-9.5 6.3-18.5 14.4-23.5 3.5-2.1 7.9-3.6 11.7-2.1 7.5 2.9 6.7 15 .3 19.9s-15.2 4.7-23.2 4.3"/></g><path d="M476.6 278.9c9.4-11.5 16.1-28.2 6.4-41.7-7.6-10.5-24.8-11.9-31.8.2-2.3 4 3.9 7.7 6.2 3.6 5.1-8.9 17.2-5.1 21.1 2.7 5.2 10.4-.3 21.9-7 30.1-2.9 3.5 2.2 8.7 5.1 5.1z"/><path d="M509.1 273.6c-.3-13.4-.7-28.2-8.9-39.5-6.8-9.3-18.4-15.4-30-12.1-4.5 1.3-2.6 8.2 1.9 6.9 9.6-2.8 19 3.6 23.8 11.7 5.7 9.8 5.8 21.9 6 32.9.1 4.8 7.3 4.8 7.2.1zm-39.4-2.6c-30.9 6.9-59.5 23.4-81 46.7-22.6 24.5-36.4 56-39.8 89.1-2 19.5-.3 39.4 5.1 58.2 2-1.2 4-2.3 6-3.5-6.2-6.5-16.8-5.7-23.2 0-7.8 6.9-8 19-4.9 28.1 3.1 9.4 9.8 18.3 19.6 21.3 8.8 2.7 18.4-.2 23.8-7.7 2.7-3.8-3.5-7.4-6.2-3.6-3.6 5-10.6 6.1-16.1 4.2-6.6-2.3-11.2-8.6-13.6-15-2.3-6.1-3.3-14 .4-19.8 3.2-4.9 10.9-7.1 15.3-2.5 2.5 2.6 7-.1 6-3.5-9-31.9-7.1-66.3 5.3-97 11.6-28.6 32.6-53 58.8-69.2 14.4-8.9 30-15.3 46.5-19 4.5-.8 2.6-7.8-2-6.8zm63 5.2c27.7-1 54.9 10.8 73.5 31.3 20.8 23 26.3 54.4 25.5 84.4-.5 17.7-2.8 35.3-5.4 52.9-.7 4.5 6.3 6.5 7 1.9 4.8-32.6 9.5-66.6 1.5-99-7.3-29.5-26.4-54.5-53.8-68.1-15-7.4-31.6-11.2-48.3-10.6-4.6.1-4.7 7.4 0 7.2zM627.8 467c2.6-4.1 8.4-3.6 11.7-.8 3.9 3.2 5.5 8.8 5.6 13.7.1 4.7-1.1 10.2-5.1 13.2-3.6 2.7-8.8 2.8-11.9-.6-3.1-3.4-8.2 1.7-5.1 5.1 5 5.5 13.5 6 19.8 2.3 7.2-4.2 10-13.2 9.4-21.2-.6-7.9-4-16.6-11.5-20.3-6.7-3.3-15.2-1.5-19.2 4.9-2.4 4 3.8 7.6 6.3 3.7z"/><path d="M363 513.3c-3.8 21.9 9.4 41.9 26.2 54.7 18.4 14 41.1 21.2 63.6 24.8 23.8 3.8 48.6 5.3 72.6 3.5 23.2-1.7 46.6-7.6 65.2-22.2 18.1-14.2 31.1-35.9 29.6-59.4-.3-4.6-7.5-4.6-7.2 0 1.2 19.4-8.3 37.3-22.5 50.1-16.1 14.6-37.5 21.4-58.8 23.7-21.6 2.4-43.8 1.3-65.4-1.1-21.3-2.4-42.8-7.2-61.6-17.8-18.9-10.7-39-30.6-34.9-54.4.9-4.5-6.1-6.5-6.8-1.9z"/><path d="M466.6 538.3c11.9 7.8 28.2 4.3 36.5-7l-6.6-.9c1.1 7.8-2.5 15.8-8.8 20.4-3.7 2.7-.1 8.9 3.6 6.2 9.2-6.7 13.7-17.2 12.1-28.5-.5-3.5-5-3-6.6-.9-6.1 8.2-18.3 9.9-26.7 4.4-3.8-2.5-7.4 3.8-3.5 6.3zm-63-129.3c3-3.6 7-5.5 11.8-5.3 4.6.2 4.6-7 0-7.2-6.4-.3-12.7 2.4-16.9 7.4-2.9 3.6 2.1 8.7 5.1 5.1zm139.5-13c3-.7 6-.6 9 .1 4.5 1.1 6.4-5.8 1.9-7-4.3-1.1-8.6-1.1-12.9-.1-4.4 1.1-2.5 8 2 7zM410.4 584.5c-17.3 14-25.1 36.3-25.3 58.1-.2 25.6 8.4 51.1 18.8 74.2 5.8 12.9 12.7 25.2 20.5 37 .7-1.8 1.4-3.5 2.1-5.3-12.7 4.5-22.8 15.5-25.2 29-1.1 6.1.2 12.6 6.9 14.5 2.9.8 6 .6 8.9-.2 4.2-1.1 8.3-4 12.8-3l-.9-6.6c-9.4 4.5-6.6 18.3 2.1 21.6 12.4 4.7 21.8-6.8 26.8-16.4h-6.2c4.8 7.3 15 10.4 22.8 5.7 7.7-4.7 9.8-15.2 5.5-22.9-2.3-4-8.5-.4-6.2 3.6 2.4 4.2 1.4 10.3-2.9 13-4.3 2.7-10.3 1-13-3.1-1.4-2.1-4.9-2.5-6.2 0-3 5.7-6.7 12.8-13.8 13.7-2.8.4-6.1-.3-7.2-3.3-.9-2.3-.2-4.7 2-5.8 2.8-1.3 2-5.9-.9-6.6-6-1.4-10.5 1.2-16.1 2.8-1.8.5-4.7 1.1-6.4 0-2.2-1.5-1.1-5.3-.6-7.5 2.5-10 10-18.3 19.7-21.7 2.1-.7 3.5-3.2 2.1-5.3-16.6-25-29.6-53.2-35.7-82.7-5.7-27.4-2.6-59.1 20.5-77.8 3.8-2.8-1.3-7.8-4.9-5z"/><path d="M472.9 755.1c2.2-4.5 8.9-4.4 10.1.8 1.2 5.5-4.8 8.7-9.3 6.2-4.1-2.3-7.7 4-3.6 6.2 10 5.6 22.8-2.7 19.9-14.4-2.7-11-18.2-12.8-23.3-2.6-2.1 4.3 4.2 8 6.2 3.8z"/><path d="M467.9 747.8c-4.4-9.6-8.8-19.1-13.2-28.7-2.2-4.8-4.4-9.5-6.6-14.3-2.3-5.2-2.1-9.3-1.4-14.9 2.7-20.1 1.9-40.3-2.1-60.2-.9-4.5-7.9-2.6-7 1.9 2.1 10.6 3.3 21.3 3.5 32.1.1 10.4-1.2 20.5-2.2 30.8-.9 9.5 5.1 18.5 8.9 26.8 4.6 10 9.2 20.1 13.9 30.1 1.9 4.3 8.1.6 6.2-3.6zm117.8-157.6c13 20.7 22.5 43.4 28 67.2 2.9 12.6 5.2 25.9 1.9 38.7-3 11.5-9.2 22.1-15 32.4-6.1 10.7-13 21.3-23.8 27.7-4 2.3-.4 8.6 3.6 6.2 9.9-5.8 17-14.7 22.9-24.4 6.5-10.5 12.9-21.7 17.2-33.3 4.8-13.1 4.5-26.5 2.1-40-2.4-13-6-25.9-10.7-38.2-5.3-13.9-12-27.3-19.9-40-2.5-3.8-8.8-.2-6.3 3.7z"/><path d="M558.3 638.4c1.2 18.2 4.4 36.2 9.7 53.7.6 1.9 2.5 3 4.4 2.5 5.9-1.5 11.8-1.5 17.7 0 4.5 1.1 6.4-5.8 1.9-7-7.2-1.8-14.4-1.8-21.5 0 1.5.8 3 1.7 4.4 2.5-5.1-16.9-8.2-34.2-9.4-51.8-.3-4.5-7.5-4.6-7.2.1z"/><path d="M571.1 687.6c-14.8 19.8-26 42.1-33 65.8-1.3 4.5 5.6 6.4 7 1.9 6.8-23.2 17.9-44.8 32.3-64.1 2.7-3.7-3.6-7.3-6.3-3.6z"/><path d="M540.9 755.9c-8.6 6-23.1 7.2-29-3.1-.9-1.5-3.4-2.5-4.9-1.3-6.7 4.9-9.5 14.2-5 21.7 4.4 7.4 14.1 9.3 21.5 5.6 4.2-2.1.5-8.3-3.6-6.2-9.5 4.7-17.9-8.5-9.2-14.9-1.6-.4-3.3-.9-4.9-1.3 7.9 13.5 27.1 14 38.9 5.7 3.6-2.6 0-8.9-3.8-6.2z"/><path d="M517.7 775.2c-10 2.7-20.8 13.7-18.4 25 1.1 5.3 5.9 8.2 11.1 7.9 6.3-.4 10.4-5.4 13.9-10.1 2.8-3.7-3.5-7.3-6.2-3.6-1.9 2.5-4.3 5.9-7.6 6.5-4.4.7-4.6-3.3-3.6-6.5 1.8-6.1 6.7-10.5 12.8-12.2 4.4-1.2 2.5-8.2-2-7z"/><path d="M522.4 790c-3.5 7.9-2.9 22.1 7.5 24.8 9.2 2.4 16.5-9.1 17.3-16.8.5-4.6-6.7-4.6-7.2 0-.3 3.1-4.2 10.7-8.3 9.8-2.2-.5-3.5-3.9-3.9-5.8-.6-2.8-.3-5.8.9-8.4 1.8-4.2-4.4-7.8-6.3-3.6zm-129.1-65.2c3.5 7.8 5 16.2 4.7 24.7-.2 4.6 7 4.6 7.2 0 .4-9.9-1.6-19.4-5.7-28.4-1.9-4.2-8.1-.5-6.2 3.7zm-58.7 11.7c-11.5-5.3-27.6-5.2-31.5 9.5-3.6 13.9 10.4 26.2 23.7 20.9 4.3-1.7 2.4-8.7-1.9-7-8.5 3.4-17.9-3.8-14.6-13 3.2-8.9 13.7-7.5 20.6-4.3 4.2 2.1 7.9-4.1 3.7-6.1z"/><path d="M320.1 762.1c-6.3 3.1-13.7 8.5-10.8 16.6 1 2.9 3.4 5.5 6.5 6.2 1.6.4 3.1.2 4.5-.4 1-.4 3.6-2.5 4-2.4-.5-2-1.1-4-1.6-6-6.1 4.8-7.5 14.2-2.8 20.4 4.7 6.2 14.2 7.4 20.4 2.8 3.7-2.7.1-9-3.6-6.2-3.3 2.5-8.4 2.6-11.1-1s-1.1-8.4 2.2-10.9c2.4-1.8.6-5.2-1.6-6-1.7-.7-3.3-.5-5 .3-1.5.7-3.2 3.1-4.7 1.8-3.9-3.4 5.2-7.9 7.2-8.9 4.2-2.1.5-8.4-3.6-6.3zm41.6-18.5c4.7 8.6 14.2 10.8 23 13.2 4.6 1.3 9.6 2.7 13.2 6.1 4.5 4.2 6.1 10.1 5.3 16.1-.6 4.6 6.6 4.5 7.2 0 1.6-11.8-5.4-22.1-16.1-26.6-8.4-3.5-21.5-3.6-26.4-12.5-2.1-4-8.4-.4-6.2 3.7zm-9.9 57.4c18.7 3.1 41.5 5.3 53.6-12.6 2.6-3.8-3.6-7.5-6.2-3.6-10 14.7-30.5 11.8-45.5 9.3-4.5-.9-6.4 6.1-1.9 6.9zm283.1-120c6.7-6.1 16.4-.5 20.5 5.8 2.3 3.6 3.8 7.6 4.9 11.7.6 2.2 3.4 9 .4 10.3-4.2 1.8-.6 8 3.6 6.2 5.3-2.3 5.3-8.8 4.2-13.7-1.5-6.7-3.7-13.7-7.6-19.3-6.9-9.9-21.3-15.1-31.2-6.2-3.4 3.2 1.8 8.3 5.2 5.2zm5.3 82c5.7-6 10.1-13 13.1-20.7 1.4-3.6 2.1-7.4 3.2-11.1.5-1.9 1.2-4.2 2.8-5.4.8-.6 3.2-1.6 4-.5 2.8 3.6 9 0 6.2-3.6-6.2-8-16.3-2.6-19.2 5.3-2 5.3-2.7 11-5.1 16.2-2.5 5.4-5.9 10.3-10 14.7-3.3 3.3 1.8 8.4 5 5.1z"/><path d="M674.5 712.9c1.1-7.4 10.7-13.2 17.3-8.2 6.1 4.6 4.6 15.1-1.8 18.6-2.6 1.4-2.2 6 .9 6.6 5.4 1 11.9 1.9 16.8 4.5 5.6 2.9-.7 8.9-3.6 11.5-2.7 2.4.2 7.1 3.5 6 2.1-.7 4.2-1.3 6.3-2-1.4-.5-2.7-1.1-4.1-1.7 2.1 4.2 3.9 9.4 2.3 14.1-1.3 3.8-4.6 6.5-8.7 6.1-4.6-.4-4.6 6.8 0 7.2 6.5.5 12.3-3.6 14.9-9.4 3.2-7.1 1.1-15-2.2-21.7-.7-1.4-2.6-2.1-4.1-1.7-2.1.7-4.2 1.3-6.3 2 1.2 2 2.3 4 3.5 6 4.9-4.3 10.8-11.8 6.9-18.6-1.8-3.2-5.2-4.5-8.5-5.7-4.8-1.7-9.8-2.9-14.8-3.8l.9 6.6c10.8-5.9 12.5-23 2.5-30.5-10.2-7.7-26.8-.5-28.6 12-.6 4.7 6.3 6.7 6.9 2.1z"/><path d="M628.7 785.3c0 6.3 4 11.2 9.6 13.6 6.6 2.9 13.4 1.9 19.7-1.3 7.3-3.8 12.9-10.1 19.7-14.6 7.6-5 16.1-8.1 25.1-9.7 4.6-.8 2.6-7.7-1.9-7-14.2 2.5-26 9.1-36.9 18.2-4.8 3.9-10.4 8.8-16.9 9-4.9.1-11.1-2.6-11.1-8.2-.1-4.6-7.3-4.6-7.3 0zM612.5 734c-4.6 15.9.5 33.8 13.2 44.6 3.5 3 8.6-2.1 5.1-5.1-10.8-9.2-15.3-24-11.3-37.6 1.3-4.4-5.7-6.3-7-1.9z"/><path d="M581.3 786.1c16.3 1 32.6-6 43-18.7 2.9-3.6-2.2-8.7-5.1-5.1-9.3 11.3-23.2 17.5-37.9 16.6-4.6-.3-4.6 6.9 0 7.2zm-137.1-96.3c16.6-6.1 34.6-11.4 52.5-12.4 8.7-.5 17.2.5 25.2 4.3 7.9 3.8 14.7 9.2 21.5 14.6 3.6 2.9 8.7-2.2 5.1-5.1-7.1-5.6-14.2-11.4-22.3-15.4-8.3-4.1-17.2-5.9-26.5-5.7-19.4.4-39.2 6.2-57.3 12.8-4.4 1.6-2.5 8.5 1.8 6.9zm29.4 25.7c2.4-4.7 6.8-8 12.1-8.5 4.6-.4 4.6-7.6 0-7.2-7.8.7-14.8 5-18.4 12-2 4.1 4.2 7.8 6.3 3.7zm40.6-.6c5.2-2.6 10.4-5.2 15.7-7.8 4.2-2.1.5-8.3-3.6-6.2l-15.6 7.8c-4.3 2.1-.6 8.3 3.5 6.2z"/><path d="M475.8 726.2c16.9-5.5 34.5-7.5 52.3-6 4.6.4 4.6-6.8 0-7.2-18.3-1.6-36.7.5-54.2 6.2-4.4 1.5-2.5 8.5 1.9 7zm82.8-249.1c3.6-2.8 7.9-4.1 12.4-4.2-1.2-.9-2.3-1.8-3.5-2.6 2.2 5.3 2 11.8-2.3 16-1.8 1.8-5.5 3.5-7 .4-1.2-2.5.6-5.3 2.1-7.3 1.2-1.6 3.3-4.8 5.2-2.2 1.3 1.7.8 3.9-1.3 4.6-5.2 1.7-6.8-5-1.2-6-1.4-.5-2.7-1.1-4.1-1.7 2 2.8 2.3 6.2 0 9h5.1c-1-1.1-1.2-2.8.1-3.8 3.7-2.7.1-9-3.6-6.2-5 3.7-6.1 10.4-1.6 15.1 1.3 1.3 3.9 1.5 5.1 0 4.3-5.2 5.1-12.1 1.2-17.8-1-1.5-2.4-1.9-4.1-1.7-8.8 1.5-12.7 13.6-4.5 18.6 7.3 4.5 18.2-.5 16.7-9.8-.6-3.9-3.4-7.4-7.2-8.5-5.4-1.6-8.7 2.1-11.6 6-2.9 3.9-4.8 8.5-3.2 13.3 1.4 4.5 5.7 7.4 10.4 7.1 12.7-.8 16.9-17.4 12.8-27.3-.6-1.5-1.8-2.7-3.5-2.6-6.5.1-12.3 2.2-17.5 6.3-3.6 3.1 1.5 8.2 5.1 5.3zm-121 5.3c-.1-9.2-8.8-18-18.3-15.2-6.2 1.8-10.4 7.8-10.9 14-.4 2.7.1 5.1 1.1 7.1.1.2.2.3.2.5 0 0 0 .1.1.1.2.4.3.7.5 1.1.3.4.6.8 1.1 1.1 3.6 3.9 9.9 5.4 15.3 4.4 1.6-.2 3.1-.7 4.4-1.5 3.9-2.1 6.6-5.9 6.5-11.6zm38.4 16.1c-3.3 4.6-1.3 11.8 3.9 14.1 5.3 2.3 11.7-1 13.1-6.5 1.1-4.5-5.8-6.4-7-1.9-.3 1.3-2 2.6-3.4 1.8-1.5-.8-1.2-2.8-.4-3.9 1.1-1.6.3-4-1.3-4.9-1.7-1.1-3.7-.3-4.9 1.3z"/><path d="M416 467.3c-3.8 1.3-7.5 1.8-11.5 1.5-4.6-.4-4.6 6.9 0 7.2 4.6.3 9.1-.2 13.5-1.7 4.2-1.5 2.4-8.5-2-7zm155.5 12.4c3 .8 6.1 1.6 9.1 2.4 4.5 1.2 6.4-5.8 1.9-7-3-.8-6.1-1.6-9.1-2.4-4.5-1.1-6.4 5.8-1.9 7z"/><path d="M564.4 476.9c-.6-1.2-2.2-1.1-3.1-.3-1 .9-1 2.5.2 3.2 1.1.7 2.7.4 3.6-.5 1.2-1.1 1.1-2.9.8-4.4-.1-.6-.7-.8-1.2-.9-1.5-.2-2.8 1-3.2 2.4-.4 1.6.3 3 1.8 3.6.6.2 1.3-.2 1.5-.8.2-.7-.2-1.2-.8-1.5-.1 0-.1-.1-.2-.3v-.2c0-.1 0-.1.1-.3.2-.4.3-.6.8-.5l-1.2-.9c.1.5.2 1.1 0 1.6-.1.4-.3.4-.6.6h-.3c.2-.2.2.7.1.6s.1 0 .1-.1c0 .1-.6-.1-.6-.2.8 1.5 2.9.2 2.2-1.1zm-136.5.1c-.8-.8-1.9-1.2-3-1.3-2.7-1.2-6.2 1.4-5.1 4.7.3.9 2 1.8 2 2.5.1.7 8.8-3.3 6.1-5.9zm-3.2 1.9h-.6v-.7h.2c.2.1.4.4.4.7z" fill="#fff"/><path d="M490.8 328.3c-7.4 10.9-16.6 20.4-27.2 28.2-3.7 2.7-.1 9 3.6 6.2 11.6-8.6 21.6-18.9 29.8-30.8 2.6-3.8-3.6-7.4-6.2-3.6zm24.5 12.6c-2.6 1.6-5.2 3.1-7.8 4.7-4 2.4-.4 8.6 3.6 6.2 2.6-1.6 5.2-3.1 7.8-4.7 4-2.3.4-8.6-3.6-6.2zm22.6 474.5c12.8 4.2 20.3-8.6 24.2-18.5 1.7-4.3-5.3-6.2-7-1.9-2.5 6.2-6.9 16.3-15.3 13.5-4.4-1.5-6.3 5.5-1.9 6.9zm-125.4-36.2c1.6-1 3.1-2.1 4.7-3.1s2.4-3.2 1.3-4.9c-1-1.6-3.2-2.4-4.9-1.3-1.6 1-3.1 2.1-4.7 3.1s-2.4 3.2-1.3 4.9c1 1.6 3.2 2.4 4.9 1.3zm63.8 9.1c7.3.9 14.6 1.7 22 2.6 4.6.5 4.6-6.7 0-7.2-7.3-.9-14.6-1.7-22-2.6-4.6-.6-4.5 6.7 0 7.2z"/><path d="M556.5 795.3c.3 4.2 1 8.9 4.5 11.7 3.9 3 8.9 2 12.4-1.2 8.3-7.7 8.2-22.5 4.9-32.5-1.4-4.4-8.4-2.5-7 1.9 2.1 6.5 2.4 13.2.3 19.7-.6 1.8-2.5 6.8-5.1 6.8-2.7 0-2.8-4.5-2.9-6.3-.3-4.7-7.5-4.7-7.1-.1zm-13.2-29.1c3.5.3 7 .7 10.4 1 1.9.2 3.6-1.8 3.6-3.6 0-2.1-1.7-3.4-3.6-3.6-3.5-.3-7-.7-10.4-1-1.9-.2-3.6 1.8-3.6 3.6 0 2.1 1.7 3.4 3.6 3.6zm-200.9-25.6c-4.8-2.8-8-7.7-8.3-13.3-.4-6.1 3.1-11.1 9.5-11.2 5.7-.1 10 4.3 12.1 9.2 2.8 6.7 1.5 14.1-.6 20.7-1.4 4.5 5.6 6.3 7 1.9 2.9-9.5 3.9-20.1-1.5-28.9-4.2-6.9-11.9-11.3-20.1-9.9-8.5 1.5-13.6 8.5-13.7 17-.1 8.5 4.7 16.3 11.9 20.6 4.1 2.5 7.7-3.7 3.7-6.1zm-8.8-34.2c2.9-23.9 29.7-36.9 50.5-25.3 4.1 2.3 7.7-4 3.6-6.2-12.5-7-28.3-7.4-40.9-.2-11.6 6.6-18.9 18.6-20.5 31.7-.5 4.6 6.8 4.5 7.3 0z"/></svg>
+ data/BallTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M473.5 699.4c5.9 7.3 16.7 7.5 26.1 6.9 34.7-2.1 69.3-5.7 103.6-10.8 7.5-1.1 15.5-2.5 21.2-7.5 5.6-4.8 8.2-12.3 10.3-19.4 25.1-88.5 5.3-165.6-44.2-229.5 7.8 10.1-43.3 27.4-46.9 32.1-11.4 15.1-8 50.5-11.4 68.6-10.7 56-30.6 110.2-58.7 159.6z" opacity=".7" fill="#ff8417"/><path d="M652.5 555.6c5.8 42.2.4 85.4-10.8 126.5 52.5-43.2 82.1-113.5 74.4-181-6.8-60-60.6-109.9-108.7-77.1-24.3 16.6 10.6 38.8 21.1 57.8 12.6 22.7 20.5 48.1 24 73.8z" opacity=".7" fill="#ffd800"/><path d="M693.2 439.7c5.1-12.4-5.5-25.2-15.2-34.5-25.4-24.2-56.3-55.1-92.8-59.4 5.5 16.1.3 56.4 14.1 65.4 7.1 4.6 34.1-.6 44.6 2.5 17.8 5.2 34.1 15.9 49.3 26z" opacity=".7" fill="#88f540"/><path d="M493.4 346.8c17.3 9.8 31.1 25.8 38.1 44.4 13.2-6.2 29.6-4.8 41.7 3.4 4.7-13.3 6.3-27.7 4.5-41.7-.3-2.6-1-5.5-3.2-7-1.4-.9-3.2-1-4.9-1.1-31.3-1.5-62.6-.8-93.8 2.1" opacity=".7" fill="#0085d1"/><path d="M436.6 679.4c4.9 1.2 10.1 2.3 15 1 6.4-1.7 10.9-7.2 14.8-12.5 39-54.3 49.2-122.9 58.4-188.7.5-3.9 1.1-7.9.3-11.8-2.6-12.9-19-20.6-19.5-33.7-.5-12.1-91.6 39.4-97.8 44.1-24.2 18.5-54 39.7-67.1 67.9-29.2 63.2 40.2 119.6 95.9 133.7z" opacity=".7" fill="#e31217"/><path d="M518.2 421.8c-2.4-8.8 1.8-18.8 10-23.7-11.8-10.8-24.5-20.7-37.9-29.7-5.1-3.4-10.4-6.8-16.5-8.2-7.7-1.8-15.8-.4-23.5 1.5-46 11.4-86.3 41.3-108.5 80.5-18.1 32-29.8 82.3-12.7 116.2C365.2 485 425.4 425 518.2 421.8z" opacity=".7" fill="#ad5fde"/><path d="M560 393c-16.5-4.7-35.7 8.1-37.7 25.2s13.8 33.9 30.9 33.1c7.2-.3 14.1-3.3 20.6-6.5 6.6-3.3 13.4-7.2 17-13.6 7.9-14-4.2-32.4-19.5-37.1s-31.8 0-47.1 4.7" opacity=".7" fill="#ebe4f0"/><path d="M463 463c4.6 13.6 15.7 24.9 29.3 29.7 5 1.8 11.4 2.3 14.7-1.9 1.9-2.5 2.1-5.8 2-9-.4-11-3.5-22.5-11.6-30-8-7.5-21.9-9.4-30-1.9" opacity=".7" fill="#ff575b"/><path d="M575.2 483.8c-7.8 0-15.6 4.3-19.6 11.1 5.8 7.8 16.8 11.3 26 8.4s16.2-12.1 16.6-21.8c-5.6-2.6-11.9-3.7-18-3.1" opacity=".7" fill="#ffc354"/><path d="M645 437.2c-4.9 4.9-10 10.3-11.1 17.2-1.1 6.8 3.9 15.1 10.8 14.4 2.9-.3 5.5-2.1 7.7-4 5.7-4.9 10.6-11.8 10.1-19.3s-8.6-14.5-15.5-11.4" opacity=".7" fill="#fff8d4"/><path d="M604.3 376.5c1.3 5.1 2.8 10.3 6.4 14.2 3.5 3.9 9.8 5.8 14.1 2.8 5.4-3.8 4.1-12.7-.7-17.1-4.9-4.4-11.8-5.5-18.3-6.3" opacity=".7" fill="#d9f5c6"/><path d="M545.9 361.2c-5-2.2-8.5 6.7-4.6 10.5s10.2 3.1 15.5 2.2c5.1-.9 11.8-4.2 10-9.1-2.8-7.4-17.5 1.4-21.3-5.5" opacity=".7" fill="#5fb9ed"/><path d="M476.6 375.2c-5.5 5-11.2 10.4-13.8 17.4-2.6 7-.9 16.2 5.7 19.8 4.5-4.9 9-9.8 13.5-14.8 4.3-4.7 8.8-9.9 9.1-16.2.3-6.3-6.2-13.1-11.9-10.4" opacity=".7" fill="#dea8ff"/><path d="M533.3 385.3c-7 3.5-14 7.5-18.9 13.7-5.4 7-6.4 15.6-4.6 24.1 3.7 16.9 14.6 33.6 32.6 36.6 16.2 2.6 34.7 2.9 47.3-9.1 10.8-10.3 15.5-26.6 9.8-40.6-6.3-15.6-23.4-26.1-40.2-23.9-5.4.7-5.5 9.3 0 8.6 11.7-1.6 23.6 3.9 30 14 6.3 10.1 4.9 22.6-2.1 32-8.7 11.6-21.5 12.2-34.9 11.6-7.4-.4-15.3-1.2-21-6.3-5.1-4.5-8.4-11.4-10.9-17.7-3-7.5-4.6-16.2.3-23.2 4.1-5.7 10.8-9.1 16.9-12.2 5-2.7.6-10.1-4.3-7.6zm-51.1 38.4c-28.5 1.7-53.8 16.6-76.4 32.9-22.2 16-42.7 35.2-55.7 59.7-7.3 13.7-11.9 28.6-13.2 44.1-.5 5.5 8.1 5.5 8.6 0 2.7-33.5 23.3-61.9 48-83.3 12.6-10.9 26.5-20.7 41-29 14.7-8.4 30.6-14.9 47.7-15.9 5.5-.3 5.5-8.9 0-8.5zm48.1 47.2c-4.6 62.6-14.8 127.1-44.9 183-8.5 15.9-18.6 30.9-30.3 44.5-3.6 4.2 2.5 10.3 6.1 6.1 42.7-50 62.6-114.2 71.8-178.3 2.7-18.4 4.5-36.8 5.9-55.3.4-5.5-8.2-5.5-8.6 0z"/><path d="M591.9 440.6c44.1 47.5 64 115.3 55.2 179.3-2.5 18.2-7.4 36.1-14.6 53-2.1 5 5.2 9.4 7.4 4.3 26.7-62.6 22.6-136.1-9-196.1-8.9-16.9-20-32.6-33-46.5-3.7-4.1-9.7 1.9-6 6zm18.2-19.2c12-2.4 24.8-4.9 37-2.1 11.1 2.6 20.3 9.6 29.1 16.5 4.3 3.4 10.4-2.7 6.1-6.1-10-7.8-20.3-15.8-32.9-18.7-13.8-3.2-27.9-.6-41.5 2.1-5.4 1.1-3.2 9.4 2.2 8.3z"/><path d="M455.4 346.2c-76.2 9.5-134.2 82.9-142.3 156.6-8.9 80.8 43.4 156.4 115.2 189.8C466 710.2 508.6 717 550 713.3c40.6-3.7 81.7-16.8 114-42.3 16.2-12.8 29.7-28.8 38.9-47.3 9.7-19.5 14.8-40.9 17.2-62.5 4.8-42.7 1.1-88.4-16.3-128-16.8-38.2-48.3-67.6-86.5-83.9-38.7-16.5-83-18.7-124.1-12.1-9.9 1.6-19.6 3.9-29.2 6.9-5.2 1.7-3 9.9 2.3 8.3 38-12.1 81.4-13.5 120.1-4.3 37.3 8.9 72.3 30.4 94.6 62 24 34 32.1 76.4 32.3 117.3.2 41.5-7.1 85.8-34.9 118.2-25.3 29.5-62.5 46.7-100 54.8-38.8 8.4-79.8 7-117.8-4.5C388.2 674 326.8 610.8 321 533.2c-2.7-37 7.7-73.5 27.5-104.6 19.2-30.1 47.6-56.1 81.7-67.9 8.1-2.8 16.6-4.9 25.1-6 5.5-.6 5.5-9.1.1-8.5z"/><path d="M475 348.9c22.9 5.5 42.4 22 51.1 43.9 2 5.1 10.3 2.9 8.3-2.3-9.8-24.7-31.1-43.6-57.1-49.9-5.4-1.2-7.6 7-2.3 8.3zm102.8-3.6c7.7 13.8 7.2 30.8-1.2 44.2-2.9 4.7 4.5 9 7.4 4.3 10-16 10.4-36.4 1.2-52.8-2.7-4.9-10.1-.5-7.4 4.3zm-29.9 64c-1.2.5-2.5.9-3.7 1.4-2.4.9-3.4 2.8-3 5.3 1.6 10.4 15.4 14 21.9 5.7 1.4-1.8 1.8-4.3 0-6.1-1.5-1.5-4.6-1.8-6.1 0-2.7 3.4-6.9 2.4-7.5-1.9-1 1.8-2 3.5-3 5.3 1.2-.5 2.5-.9 3.7-1.4 5.1-1.9 2.9-10.2-2.3-8.3z"/></svg>
+ data/BalloonTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st1{opacity:.7}.st2{fill:#870085}</style><path d="M455.4 517.7c19.3 21.1 46.6 37.9 75.5 35.7 40.2-3.1 68.2-40.6 82.4-77.4 12.4-32.1 18.8-67 13.3-100.8-10.2-62.5-70.4-116.9-138.8-99.9-56.5 14-78.1 95.9-74.2 144.3 2.9 35.9 17.1 71.2 41.8 98.1zm73.3 61.3c-6.4 10-12.7 19.9-19.1 29.9 9.9-1 19.8-2.1 29.6-3.1l-18-31.8" opacity=".7" fill="#ff00fb"/><g class="st1"><path class="st2" d="M522 569.6c-8.5-4.3-17.7-6-27.1-4.8-8.1 1.1-19.8 4.5-23.6 12.5-4.1 8.6 3.9 15.5 11.4 18 9.9 3.3 20.8 3.3 31 1.3 7.6-1.5 4.4-13.1-3.2-11.6-5.8 1.2-11.9 1.4-17.8.4-2.6-.4-5.5-1-7.9-2.1 0 0-2.7-1.3-2.6-1.7-.1.4 2-.8 2.2-1 9.5-5.6 21.7-5.7 31.5-.8 7 3.7 13-6.7 6.1-10.2z"/></g><g class="st1"><path class="st2" d="M519.7 575.9c-19.5 22.8-46.5 37.4-76.2 41.6-7.6 1.1-4.4 12.6 3.2 11.6 31.5-4.4 60.8-20.6 81.5-44.7 5-5.9-3.5-14.4-8.5-8.5z"/></g><g class="st1"><path class="st2" d="M519.6 617.2c-.6 10.8-6.3 20.5-10.3 30.3-3.5 8.7-5.6 18.5-3.7 27.8 4.1 20.2 24.9 23.8 42.2 24.8 7.7.5 16.8 1.2 23.1 6.1 7.2 5.7 5.9 15.2 1.4 22.2-5.2 8.1-14.5 12.5-22.9 16.6-8.7 4.3-17.5 8.5-24.7 15.1-7.1 6.6-12.1 15.7-11.5 25.6.5 9 5 18 13.6 21.6 7 3 13.1-7.3 6.1-10.4-6.7-2.9-8.9-10.4-7.1-17.2 2.2-8.2 9.9-13.9 16.9-17.9 15.7-9.1 35-14.5 42.7-32.7 7.3-17.1-2-33-19.1-38.2-8.2-2.5-16.7-2.5-25.2-3.2-7.5-.7-16.7-2.2-21.4-8.9-5.9-8.4-2.2-20.4 1.4-28.9 4.5-10.8 9.7-20.8 10.4-32.7.5-7.7-11.5-7.7-11.9 0z"/></g><path d="M503 261.7c-33.6-1-61 25.4-78.1 51.8-18.2 28.1-27.3 62.1-25.3 95.6 2.1 36 15.6 71.6 34.1 102.3 17.2 28.5 42.6 54 76.2 61.4 33.3 7.3 70.7-7.7 82.5-41.4 1.9-5.5-6.8-7.8-8.7-2.4-9.5 27.2-40.3 40.3-67.4 35.9-31.3-5.2-55.6-27.8-72.1-53.7-17.5-27.5-30.8-59.7-34.7-92.2-3.7-30.8 1.9-62.2 16.5-89.6 14.9-28.1 42.3-59.8 77-58.7 5.8.2 5.8-8.8 0-9z"/><path d="M535.3 298.4c-.7 15.2-1 30.7 3.2 45.3 4.2 14.6 13.5 28.5 27.4 34.7 4.6 2 9.7 3.2 14.7 2.3 11.2-2 18.1-13.6 20.1-24.8 5-27.5-13.7-57.1-40.6-64.5-8.3-2.3-21.2 2.7-17.5 10.4" opacity=".7" fill="#ffa1fe"/><path d="M481.9 275c26.8-11.1 57.5-9.5 83.7 2.7 26 12.1 45.9 33.9 58.2 59.6 26.8 55.7 14.7 125.2-18.2 175.8-16.6 25.5-40.6 47.2-71.2 53.2-5.7 1.1-3.3 9.8 2.4 8.7 61.4-12.1 97-79.4 107.3-135.8 5.9-32.3 4.2-66.1-8.3-96.8-11.3-28-30.8-53-57.3-68.1-29.7-17-67.1-21.2-99-7.9-5.3 2.1-2.9 10.9 2.4 8.6z"/><path d="M547.4 296.2c1.2-1 8.4 4.7 9.4 5.5 3 2.1 5.8 4.5 8.5 7 5.5 5.1 10.5 10.7 14.8 16.9 8.6 12.5 14.3 26.7 16.7 41.7.9 5.7 9.6 3.3 8.7-2.4-3-18.4-10.8-35.7-22.4-50.2-5.6-7.1-12.1-13.4-19.3-18.8-6.3-4.8-15.2-12.1-22.8-5.9-4.5 3.5 2 9.8 6.4 6.2zm54.9 112.9c1.7 18.1.4 36.1-4.2 53.7-1.5 5.6 7.2 8 8.7 2.4 4.8-18.3 6.3-37.3 4.5-56.1-.5-5.7-9.5-5.7-9 0zm-84.6 168.1c-5.9 13.9-13.5 27-22.5 39.1-2.5 3.4 1.6 7.4 5.1 6.6 9-2.1 17.9-4.3 27-6.2 4.6-1 12.1-2.4 14.5 2.9 2.3 5.3 10.1.7 7.8-4.5-3.2-7.2-11.5-8.7-18.6-8-11 1.1-22.1 4.7-32.9 7.2l5.1 6.6c9.6-12.8 17.3-26.5 23.4-41.2 2-5.5-6.7-7.8-8.9-2.5z"/><path d="M523.7 572.3c5.3 14.3 11.8 28.2 19.7 41.3 3 5 10.8.5 7.8-4.5-7.4-12.5-13.7-25.5-18.8-39.2-2-5.3-10.7-3-8.7 2.4z"/></svg>
+ data/BellTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M608.8 608.6c-19.8-22.5-22.2-55.6-25.1-86s-9.2-64-33-81.8c-10.4-7.8-23.6-11.9-31.9-22-11.5-14-11.5-36.8-25.9-47.4-9.7-7.1-24.3-5.5-32.4 3.5-9.3 10.4-1.4 20.3-5.1 30.4-4.6 12.7-10.5 13.7-21.6 22.8-21.4 17.5-36.9 42.6-41 70.9-3.8 26.3 1.7 53.3-.6 79.8s-16.1 55.5-41.2 60.9c3.2 8.3 13.5 9.9 22.1 10.3 32.9 1.5 65.8 3 98.7 4.4-8.6 20.3 6.8 47.2 28 48.9 21.2 1.7 40.4-22.3 34.9-43.8 22.9-4.1 45.7-8.2 68.6-12.3 10.6-1.9 22.9-5 27.5-15.2 5.6-12.7-9.6-29.1-22-23.4zM479.3 415.5c-4.4-.8-8.5-4.4-9.5-8.7l.1 3.9c-4.2-8-5.4-17.5-3.5-26.4 2-1 3.9-1.9 5.9-2.9 11.9 5.7 20.8 17.8 23 31.3-5.1 1.9-10.6 3.8-16 2.8z" opacity=".7" fill="#ffd900"/><path d="M480.5 664.7c-5.9 2.3-9.7 6.7-9.9 11.2 22.5 3.4 46.7 1.4 67.3-5.4.9-.3 1.8-.6 2.4-1.2 1.9-1.9-2.2-4-5.5-4.6-21.6-4.4-45.2-4.5-66.9-.3" opacity=".7" fill="#c47f00"/><path d="M470 400.6l-.1-3.2c-.2 1.1-.1 2.2.1 3.2z" fill="#ff7300"/><path d="M470.7 394.6c-34.5 5.2-65.4 27.9-81.8 58.5-9.5 17.7-13 37-13.2 56.9-.2 22.1 2.9 44.5-.5 66.4-1.6 10.3-4.5 20.6-9.6 29.7-2.4 4.3-5.3 8.3-8.7 11.8-1.6 1.7-3.4 3.5-5.4 4.8-1 .6-4.3 1.7-4.4 1.4-1.4-5.6-10.1-3.2-8.7 2.4 2 8.1 11.8 7.6 17.6 4 7.5-4.6 13.5-12.8 17.7-20.4 9.6-17.5 12.1-37.9 12-57.5-.1-24.4-3.7-49.6 2.5-73.6 4.8-18.3 15-34.9 28.6-47.9 15.4-14.8 35-24.6 56.1-27.8 5.9-.8 3.4-9.5-2.2-8.7z"/><path d="M360.5 632.5c-3.5-9.6-16.9-16-24.7-7.2-6.8 7.8-4.1 20.7 3 27.4 9.6 9 24.3 9 36.6 10 16.8 1.4 33.6 2.8 50.5 4.1 32.9 2.6 65.6 3.2 98.5.5 32.4-2.7 64.6-7.8 96.6-13.5 12.6-2.2 29-4.8 35.3-17.7 4.9-10 2.2-23-8.8-27.2-5.4-2.1-7.8 6.6-2.4 8.7 8 3.1 4.2 15-.5 19-8.3 7.1-21.5 7.8-31.8 9.6-25.2 4.4-50.4 8.4-75.8 11-25.8 2.6-51.8 3.8-77.7 2.8-25.7-1-51.3-3.5-76.9-5.6-11.3-.9-27.5.3-36.7-7.5-3.4-2.9-5.5-8.1-4.4-12.5 1.5-6 8.8-4.5 10.6.7 1.8 5.2 10.5 2.9 8.6-2.6z"/><path d="M494.7 413.8c19.1-6.6 39.9 2.4 55.5 13.4 14.5 10.2 26.2 24.3 33.7 40.3 15.5 32.8 7.6 70.5 18.8 104.4 4.9 14.8 19 42 38.5 33.1 5.3-2.4.7-10.2-4.5-7.8-8.6 3.9-17.1-10.1-20.3-16.1-4.1-7.6-6.6-15.9-8.2-24.4-3.4-17.4-3.4-35.3-5.5-52.9-2.1-17.2-6.3-33.7-15.1-48.8-8.7-14.9-20.8-27.8-35.2-37.3-17.2-11.4-39.6-19.7-60-12.7-5.5 2-3.2 10.7 2.3 8.8z"/><path d="M609.4 616.5c7.5-6.4 18.5-12.3 28.5-8.8 7.9 2.8 13.3 11.5 10 19.5-2.2 5.3 6.5 7.7 8.7 2.4 4.9-11.7-3-24.8-13.9-29.6-13.8-6.1-29.1 1.1-39.7 10.2-4.4 3.8 2 10.1 6.4 6.3zM453.8 428c-14.6 7.3-26 20-32 35.2-3.2 8-4.3 16.5-4.4 25.1-.2 10.6.6 21.1-3.3 31.2-2.1 5.4 6.6 7.8 8.7 2.4 6.4-16.8.9-35.2 6.2-52.2 4.6-14.8 15.4-27.1 29.3-34 5.2-2.5.6-10.3-4.5-7.7zm-43.3 123.5c1.7 13.4 1 26.7-2.3 39.8-1.4 5.6 7.3 8 8.7 2.4 3.4-13.8 4.4-28 2.6-42.2-.7-5.6-9.7-5.7-9 0zm46.8-155.1c-.1-15 1.4-39.9 22.2-38.9 4.3.2 9.2 1.2 13.2 2.7 3.9 1.5 5.1 7.4 6.5 10.9 1.6 4.1 3.1 8.2 4.5 12.3.8 2.4 1.5 4.8 2.2 7.2.5 1.6 1.8 4.4 1.3 5.9l3.1-3.1h.6c1.1 1 2.1 2.1 3.1 3.1 0-.3-.1-.5-.2-.8-1.1-5.7-9.8-3.3-8.7 2.4.9 4.8 7.5 5.9 10.1 1.9 3.2-4.9-1.5-14.1-3.1-18.9-2.3-6.9-4.9-13.7-7.9-20.3-2.9-6.5-6.7-8.6-13.5-10.3-12.5-3.2-25-2.7-33.7 8-8.7 10.7-9.2 24.7-9.1 37.9.4 5.8 9.4 5.8 9.4 0z"/><path d="M472.6 395.3c-1.2-6.8 1.7-13.1 7.1-17.3-1.5.4-2.9.8-4.4 1.2 8.3 3.2 12.6 12 11.5 20.6-.8 5.7 8.2 5.7 9 0 1.5-11.5-5.2-24.3-16.2-28.6-5.9-2.3-10.3 3.5-12.9 8.4-3 5.7-3.8 11.8-2.6 18.1.9 5.6 9.6 3.2 8.5-2.4zm-9.7 269.3c-6.3 27.8 18.4 52.1 45.7 50.1 13.9-1 27.7-7.5 36.4-18.6 8.1-10.3 9.8-25.6-.3-35.3-4.2-4-10.6 2.3-6.4 6.4 8.5 8.1 3.5 20.2-3.8 27.1-7.7 7.3-18.4 11.5-29 11.5-20.2.1-38.7-18-33.9-38.8 1.2-5.6-7.5-8-8.7-2.4z"/><path d="M506 699.3c15.8 5.9 31-8.9 26.7-24.8-1.5-5.6-10.2-3.2-8.7 2.4 2.6 9.8-6.5 17.1-15.6 13.7-5.5-2-7.8 6.7-2.4 8.7z"/></svg>
+ data/BirdTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0,.st2{opacity:.7;fill:#f0f5f4}.st2{fill:#aed1c8}</style><path class="st0" d="M414.7 425.4c-19.1-2-38.6 1.9-57.5-1.3-15.9-2.7-30.5-10.2-44.9-17.7-40.2-20.9-80.3-41.8-120.5-62.7 26.4 30.9 52.8 61.7 79.2 92.6 4.6 5.4 8.6 14.8 2.5 18.2-5.5 3.1-11.9-3.6-18.2-3.3-9.5.5-10.3 15.9-2.9 21.9 7.4 6 17.7 6.1 26.9 8.8 9.1 2.6 18.7 11 15.8 20.1-2 6.4-9.2 9.6-12.8 15.3-6.7 10.6 2.5 25.5 14.6 29.1 12 3.6 24.9-.3 36.8-4.3-11.6 5.9-14.7 23.7-5.8 33.2 8.9 9.5 26.9 7.4 33.4-3.8 3.7 18.3 21.9 32.5 40.5 31.6 18.6-.9 35.4-16.8 37.3-35.4 1.2-12-3-24.2-.6-36 3-14.6 15.5-25.1 22.8-38 17.8-31.3-17.2-65.2-46.6-68.3z"/><path class="st0" d="M437.7 557.1c5 27.7 29.3 49 33.9 76.7 4.9 29.7-13.6 57.5-25.2 85.3-2.6 6.1-4.7 13.5-1.1 19 3.8 5.7 12.2 6.5 18.4 3.5s10.5-8.6 14.6-14c1.5 12.2 19.5 15.8 29.4 8.4 9.9-7.3 13.4-20.3 16.3-32.3 3.3 9.1 7.1 18.8 15.1 24.2s21.5 3.6 24.3-5.7c1.3-4.2.2-8.8 1.5-12.9 1.4-4.1 7.8-6.7 9.8-2.9 5.5-8.3 1.7-19.7-4.1-27.8s-13.7-15-17.2-24.3c-4.8-12.6-.5-27.3 7.7-38.1 8.1-10.8 19.6-18.5 30.9-26 10 12.5 27.1 18.8 42.8 16.1s29.6-14.5 34.9-29.6c8.6 4.9 20.2 4 28-2.1 7.8-6.1 11.4-17.1 8.7-26.7 8.9-12.1 23.1-18.8 36.2-26.2s26.3-17.2 30.5-31.6c4.2-14.4-6.2-33.3-21.2-31.8 54.4-33.1 96.1-86.5 115.2-147.3-36.2 39.3-74.7 80-125.4 96.9-26.7 8.9-55.3 10.6-82.3 18.6-27 8-54 24.8-62.6 51.6-2.9-12.3-14.5-22.1-27.1-22.8 12.2-18-2.9-45.2-24.2-49.7-40.9-8.6-60 33.5-72.5 63.5-12 28.6-41.1 55.8-35.3 88z"/><path d="M527.7 478.9l-9.6 9.9c4.7 3.3 7.8 8.7 8.4 14.4 4.2-4.5 8.5-9.1 12.7-13.6-2.9-6-8.5-10.6-15-12.1m-53.5 167.9c-6.3 11.5-5.7 26.3 1.4 37.3 13.1-4.9 20.7-21 16.1-34.2m57.7-3.7c7.8 5-1 20.4 6.8 25.3 5.1 3.2 11.6-2.5 13-8.3 2.5-10.5-4.6-22.3-15.1-24.8" fill="#ffc400" opacity=".7"/><path class="st2" d="M628.7 440.4c9.6-8.1 21.2-13.8 33.5-16.5-1 20.6-7.8 41-19.5 58-2.1 3.1-4.9 6.4-8.6 6.9-6.7.8-10.7-7.3-11.3-14-1.7-18 6-36.6 19.9-48.1m-12.4 80.2c-.9-4.4 4.5-8.3 8.8-7.1 4.4 1.2 7.1 5.7 7.8 10.2.7 4.5 0 9-.3 13.5s-.1 9.1-1.8 13.2c-1.8 4.1-6.4 7.5-10.6 6s-4.7-9.1-.3-9.9"/><path class="st2" d="M643 541.4c1.9-.5 3.8-.9 5.7-1.4 5.5 5.8 6.8 15.1 3.1 22.2-3.7 7.1-12.1 11.3-20 10.2 6.6-10.8 8.5-24.4 4.9-36.6m37.9-53.2c6.7-1.9 11.8-7.2 17.9-10.6 6.1-3.4 15.2-3.9 18.8 2 3.6 5.9-.8 13.5-5.9 18.1-5.6 5.1-13 9.1-20.4 7.6-7.4-1.5-13.2-10.6-9.1-16.9m-313.6-48.9c-3.9 2.3-6.9 6.8-6.2 11.3.7 4.4 4.4 7.5 8 10.1 8.8 6.5 18.1 12.3 27.8 17.4-5.5.2-8.9 6.8-7.8 12.1 1.2 5.3 5.5 9.4 9.9 12.6 11.8 8.5 27.7 14.8 42.3 13.8-7.7-9.4-15.8-18-16.6-30.8-.6-9.3 5.6-18.5 4.5-27.5-2.4-21.5-45.9-28.4-61.9-19zm23 139.3c-7.1 1.9-11.6 10.3-9.3 17.3 2.3 7 10.9 11 17.8 8.3 6.8-2.7 10.4-11.5 7.3-18.2m54.5 118.2c-7.7 9.4-13.8 20.2-17.9 31.6-1.9 5.2-2.7 12.4 2.2 15 3.6 1.9 8.1-.2 11.4-2.6 14.7-10.6 24.4-28.1 25.5-46.2m19.5 18.4c-2 4.5-3.8 10.1-.6 13.8 3.4 3.9 10.4 2.1 13.4-2.2s3.1-9.9 3.2-15.1m23.7-1.7c1 4.5 2.1 9.2 4.9 12.9s8 6 12.2 4.2c5-2.1 6.5-8.6 6.3-14s-1.4-11.2 1-16.2"/><path d="M485.6 453.1c1.6-11.2 5.8-22 12.1-31.4 3.2-4.7 6.8-9 11-12.9 2-1.9 4.2-3.7 6.4-5.4 2.4-1.8 5.5-4.5 8.6-3.2 3.6 1.5 5.6-4.3 2-5.7-6.5-2.6-12.8 2.8-17.5 6.7-5.1 4.3-9.8 9.2-13.7 14.6-8 10.9-13 23.6-15 36.9-.5 3.9 5.6 4.3 6.1.4z"/><path d="M524.1 400.3c-.6-3.8-1.2-7.5-1.9-11.2-.3-2-.7-4-1-6-.1-.8-.2-1.9-.4-2.6-.1-.4-.2-.9-.2-1.3-.7.4-.7.7-.1.8 2.4 2 4.7 3.6 6.4 6.3 1.8 2.6 2.8 5.6 3.4 8.7.7 3.9 6.5 2.6 5.9-1.2.2 1.6-.3-.4.7.4.6.4.5 0 1 .8.9 1.7-.9 4.9-1.6 6.4-1.7 3.4 3.3 6.9 5 3.4 2.4-4.8 5.3-13.4-1.6-16.1-4.6-1.8-10.2 1-9.5 6.3 2-.4 4-.8 5.9-1.2-.9-4.6-2.7-8.8-5.5-12.5-2.4-3.2-6.4-7.4-10.6-7.6-5.5-.4-5.8 4.6-5.1 8.7 1.1 6.4 2.1 12.8 3.2 19.2.7 3.8 6.6 2.6 6-1.3z"/><path d="M542.2 401.5c9.5-.8 17.8 6.5 21.7 14.5 4.7 9.4 5 20.2 5.3 30.5.1 3.9 6.2 4.3 6 .4-.4-12.2-.8-25.5-7.4-36.2-5.8-9.4-15.6-16-26.9-15.1-3.8.3-2.5 6.2 1.3 5.9zm-48.7 48c-1.4 5.2-.9 10.4 1.7 15.2.9 1.6 3.2 2.3 4.7.9 4.4-4.2 5.7-11.1 2.6-16.5-3.7-6.2-11.7.4-8.8 6.1 1.8 3.5 7.2.8 5.4-2.7.1.1-.1.1-.1.1-.7-.3-1.4-.7-2.1-1 2.1 2.9 1.6 7.1-1 9.5 1.6.3 3.1.6 4.7.9-1.8-3.3-2.3-6.9-1.4-10.5 1-3.8-4.7-5.8-5.7-2z"/><path d="M561.7 449.5c0 2.3-.1 4.6-.1 6.9 0 2.1 1.6 3.3 3.6 3.2 3.1-.3 5.1-3.4 5.2-6.3.1-3.4-1.9-6.2-5.3-6.8-1.6-.3-3.1 1.3-3.2 2.8-.1 1.8 1.2 2.9 2.8 3.2-.4-.1-.4-.1-.1 0-.2 0-.4-.2-.5-.3.5.4-.2-.4.1.1.1.3.1.3 0-.1 0 .2.1.3.1.5 0 .6.1-.5 0 .3s.1-.3 0 .3c0 .2-.1.3-.2.5.2-.3.2-.4.1-.2s-.1.1.1-.1c-.3.2-.2.2.1 0-.3.1-.3.1.1 0-.2 0-.3.1-.5.1 1.2 1.1 2.4 2.1 3.6 3.2 0-2.3.1-4.6.1-6.9.1-3.9-5.9-4.3-6-.4zm-42.1 32.6c-1.9 2.6-3.7 5.3-5.6 7.9-1.2 1.7-.3 3.9 1.5 4.6 6.2 2.5 9.9 8.8 9.2 15.4-.3 3.6 4.5 4.1 5.9 1.2 2.5-5.6 5.1-11.2 7.7-16.8 1.6-3.5-4.1-5.5-5.7-2-2.5 5.6-5.1 11.2-7.7 16.8 2 .4 3.9.8 5.9 1.2.9-9.3-4.7-18.1-13.3-21.5.5 1.5 1 3 1.5 4.6 1.9-2.6 3.7-5.3 5.6-7.9 2.3-3.3-2.7-6.7-5-3.5zm-36.1-23.3c-5.6-3.1-11.6-.4-15.2 4.4-3.9 5.2-4.5 12.5-3.5 18.6 2.6 14.8 14.7 24.7 25.9 33.4 3.1 2.4 6.5-2.6 3.4-5-8.3-6.5-17.2-13.3-21.5-23.2-2-4.5-2.9-9.8-1.9-14.7.8-3.5 4.6-11.1 9.3-8.5 3.5 1.8 6.9-3.2 3.5-5zm98-2c4.5-1.9 7.8 3 8.5 6.8.9 4.3.2 9.1-1 13.2-2.4 8.2-7.7 15.4-15 20-3.3 2.1-.6 7.5 2.7 5.4 10.3-6.5 17.4-17 19.2-29.1.9-5.8.7-12.5-2.9-17.5-3.3-4.6-9.1-6.4-14.3-4.2-3.5 1.5-.8 6.9 2.8 5.4zM457 446.3c-16.9-5.1-27.3-22-44.6-26.4-10.8-2.7-21.7.5-32.6-.1-10.4-.6-20.4-3.9-29.9-7.9-19.6-8.4-37.6-19.6-58.1-26-20.5-6.5-41.9-10.8-59.8-23.4-18.8-13.2-32.3-32.5-45.4-51.1-2.2-3.2-6.8.8-4.6 4 11.7 16.6 23.6 33.3 39.2 46.4 16.8 14.1 37 20.5 57.7 26.5 10.6 3.1 21.1 6.4 31.1 11 9.8 4.5 19.3 9.6 29 14.3 9.3 4.5 18.9 8.5 29 10.6 5 1.1 10.1 1.7 15.2 1.7 6 0 11.9-1 17.8-1.1 11.4-.3 19.9 4.9 28.6 11.7 7.9 6.1 15.6 12.6 25.3 15.5 3.8 1.1 5.8-4.6 2.1-5.7z"/><path d="M176.5 312.8c-7.7 7.5-2.4 18.6 1.5 26.7 4.8 10 10.2 19.7 16.3 29 12.1 18.7 26.4 35.9 42.8 51.1 9.3 8.6 19.1 16.5 29.5 23.8 3.2 2.2 6.6-2.8 3.4-5-33.6-23.5-61.6-54.8-81-90.9-2.8-5.1-5.4-10.3-7.7-15.6-1.8-4.1-4.4-10.8-.6-14.5 2.6-2.8-1.4-7.4-4.2-4.6z"/><path d="M267.4 441.3c-11-3-22.3-4.3-33.6-3.6-4.4.3-8.9.9-12.4 3.8-3 2.5-4.6 6.3-5.1 10.1-1.1 9 4.7 16.4 11.4 21.7 8.2 6.4 17.6 11.6 26.9 16.2 11.3 5.6 23.1 10 35.2 13.4 3.7 1 5.8-4.7 2-5.7-11.4-3.1-22.4-7.2-33-12.3-10-4.8-20.5-10.3-28.9-17.5-3.7-3.2-7.2-7.4-7.6-12.5-.4-4.8 1.8-9.1 6.6-10.4 5.4-1.5 11.7-1 17.2-.6 6.5.4 13 1.5 19.3 3.3 3.7.9 5.7-4.8 2-5.9zm20.5 64.3c-10.7 3.2-23.2.8-31.9 9.3-6.9 6.8-6 16.5 1.3 22.5 3.6 2.9 7.9 4.8 12.2 6.3 6 2.2 12 4.1 18.1 5.8 12.5 3.4 25.3 5.8 38.2 7.1 3.9.4 4.3-5.6.4-6-10.7-1.1-21.3-2.9-31.7-5.5-9.5-2.4-19.6-4.9-28.4-9.2-3.1-1.5-6.6-3.6-8.2-6.8-2.1-4.1.1-8.3 3.5-10.9 7.7-6 18.8-3.9 27.7-6.6 3.7-1.1 2.5-7.1-1.2-6z"/><path d="M334.9 549.7c-8.6-1-19.4-1.4-25.4 6.1-6.8 8.5-2.4 20.2 5.2 26.4 9.1 7.3 22.4 10 33.8 9.6 8.3-.3 21.6-2.1 22.2-12.8.1-2.7-3-4.1-5-2.5-5.5 4.4-7.5 11.5-6.4 18.4 1.2 7.4 6.1 13.4 12.8 16.6 16.8 8.1 34.2-1.4 48-10.8 3.2-2.2-.8-6.7-4-4.6-11 7.5-24.6 15.5-38.4 11.1-5.6-1.8-10.5-5.7-12.2-11.5-1.5-5.3-.4-11.2 4-14.7-1.7-.8-3.3-1.7-5-2.5-.4 7.5-14.5 7.3-19.5 7.2-8.7-.3-18.1-2.3-25.3-7.3-6-4.2-11.2-13.8-4.6-19.9 4.9-4.5 13.2-3.5 19.3-2.8 3.9.5 4.3-5.6.5-6zm51.7-113.3c-7-5.5-16.3-7.5-25-5.9-7.2 1.3-18.9 6.6-19 15.3 0 4.3 3.2 7.7 6.3 10.3 4.3 3.8 8.7 7.4 13.3 10.8 9.5 7.1 19.5 13.5 29.9 19.1l2.7-5.4c-5.9-1.9-13.4-3.3-19 .1-6.2 3.9-6.1 11.6-2.1 17 5 6.7 13.7 10.4 21 13.7 8.8 3.9 18.1 6.9 27.5 8.8 3.8.8 5.8-4.9 2-5.7-13.8-2.9-28-7.6-39.9-15.2-3.5-2.2-11.3-8.8-5.8-13.1 3.7-2.9 10.2-1.1 14.2.2 3.1 1 5.8-3.7 2.7-5.4-8.1-4.4-15.9-9.1-23.5-14.4-7.2-5-15.2-10.4-21.2-16.9-1.4-1.5-2.6-3.1-1.7-5.2.7-1.7 2.6-3.1 4.1-4.1 2.9-2 6.2-3.3 9.6-3.9 7.2-1.3 14.6.4 20.4 4.9 3.2 2.4 6.6-2.6 3.5-5zm215.3 25.3c3.6-11.4 11.1-21 21.3-27.2 3.3-2 .7-7.4-2.7-5.4-11.6 6.9-20.3 17.7-24.3 30.6-1.2 3.7 4.5 5.7 5.7 2zm60.3-39.8c40.2 1 79.4-12.3 113.6-32.8 36.2-21.7 67-51.3 95.7-81.9 4-4.3 8-8.5 11.9-12.8 3.5-3.8 8.3-7.8 10.3-12.7 1.6-3.8 1.1-8.2-2.5-10.6-3.1-2.2-7.4-2-9.6 1.3-2.2 3.3 2.9 6.6 5 3.4.6-.9 1.9 1.2 2 1.8.3 2.1-2.2 4.6-3.5 6-3.2 3.6-6.5 7.1-9.8 10.7-6.3 6.8-12.6 13.6-19 20.2-12.8 13.3-26.1 26.1-40.2 38.1-27.7 23.4-58.9 43.4-93.8 54.4-19.3 6.1-39.5 9.4-59.7 8.9-3.9-.1-4.3 5.9-.4 6zm216-118.7c-15 56.8-52 107.2-101.2 139.3-13.7 8.9-28.4 16.4-43.6 22.3-3.6 1.4-.9 6.8 2.7 5.4 55.7-21.4 102.6-64.5 129.7-117.6 7.7-15.1 13.9-31 18.2-47.4.9-3.8-4.8-5.8-5.8-2zM766.5 468c5.3-2 12.1-4.5 17.4-1 5.7 3.7 2.3 11.5.1 16.4-5 10.7-13.9 19.9-22.3 27.9-17.1 16.3-37.4 28.8-59.5 37-3.7 1.3-.9 6.8 2.7 5.4 20.3-7.5 39.2-18.7 55.5-33 8-7 15.5-14.7 21.9-23.1 3.3-4.4 6.3-9.1 8.3-14.3 1.9-4.6 3.5-10.1 1.8-14.9-1.7-4.8-6.2-7.7-11-8.7-6.1-1.2-12 .9-17.6 3-3.6 1.2-.9 6.6 2.7 5.3zm-52 84.2c-5 14.3-16.3 33.8-34.7 28.9-3.8-1-5.8 4.7-2 5.7 9.4 2.5 19.1-.3 26.4-6.5 8-6.7 12.6-16.5 15.9-26.1 1.4-3.7-4.3-5.7-5.6-2zM581 581c5.9 15.6 20.6 26.8 36.6 30.3 9.4 2.1 19.2 1.9 28.6-.2 4.6-1 9.2-2.4 13.6-4.2 4.1-1.6 8.6-3.4 12.1-6.3 3.3-2.7 5.2-6.8 4.1-11.1-.5-1.7-1.5-3.3-2.9-4.4-.8-.6-1.7-.9-2.6-1.2-.3-.1-1-.3-1.3-.2-1 .2-2.3 2.3-3.5 1.9 3.7 1.1 5.7-4.6 2-5.7-3.8-1.2-6.6 2.7-5.3 6.2.8 2.2 2.8 2.9 4.9 3.4 2.3.5 3.7 1.3 2.8 4-1 2.8-4.6 4.3-7.1 5.5-2.5 1.2-5 2.3-7.5 3.2-5.6 2.1-11.4 3.5-17.3 4.2-21.1 2.4-43.8-7.2-51.7-28-1.4-3.8-6.8-1.1-5.5 2.6z"/><path d="M636.1 432.6c4.5-2.8 9.1-5.5 13.8-8.1 2.3-1.3 4.7-2.5 7.1-3.7 2.3-1.2 5.5-3 8.2-1.9 3.2 1.3 3.4 5.9 3.3 8.8-.2 4-1.6 8-3 11.8-6.4 18-17.8 33.8-32.7 45.8 1.3 1.5 2.7 3 4 4.6 1.1-1 2.1-2.1 3.2-3.1 2.8-2.7-1.2-7.3-4-4.6-1.1 1-2.1 2.1-3.2 3.1-2.8 2.7 1 7 4 4.6 17.3-14 31-33.8 36.7-55.5 1.9-7.2 2-18.3-6.6-21.2-5.7-1.9-11.5 1.7-16.4 4.3-5.8 3-11.5 6.3-17.1 9.8-3.3 1.9-.6 7.3 2.7 5.3zm7.5 67c3.9-.7 7.6 2 9 5.5 1.9 4.7-1.8 8.1-4.5 11.5-4.1 5.2-6.2 15.2 1.9 17.9 3.7 1.2 5.7-4.5 2-5.7-4.6-1.5.7-8.2 2.1-10 2.9-3.5 5.5-7.2 5.1-12-.7-8.2-8.6-14.6-16.8-13.1-3.8.7-2.6 6.6 1.2 5.9zm-171.9.1c-24.2 10.9-29.1 39.6-26.1 63.3 3.1 24.2 11.9 47.9 24.8 68.6 7.2 11.5 15.7 22.2 25.4 31.8 2.8 2.7 7.3-1.2 4.6-4-16-15.8-28.8-34.7-37.5-55.4-4.4-10.4-7.6-21.2-9.8-32.3-2.5-12.7-3.8-26.1-.5-38.8 3.1-11.8 10.4-22.6 21.8-27.7 3.5-1.6.8-7.1-2.7-5.5zm111.7 9.6c14 17.3 18.9 41.3 13.8 62.9-2.6 11-7.8 21-15.1 29.7-7.5 9-16.5 16.6-25.3 24.2-9.8 8.6-19.5 17.5-26.8 28.4-2.2 3.2 2.8 6.6 5 3.4 13.9-20.5 36-33.4 51.8-52.2 15.2-18.2 21.3-42 17.1-65.3-2.3-12.8-7.7-24.9-15.9-35-2.5-3.1-7 .9-4.6 3.9zm-73.9 43.9c.4 8.3 7 15.8 15.7 15.9 8.5.1 15.6-7.2 16-15.5.2-3.9-5.8-4.3-6-.4-.2 5.1-4.3 9.8-9.6 9.9-5.1.2-9.8-4.5-10-9.5-.2-3.9-6.2-4.3-6.1-.4z"/><path d="M534.2 552.1c1.5 10.8 15.9 13.6 21.4 4.2 2-3.4-3.1-6.8-5-3.4-2.9 5-9.6 3.8-10.4-2-.6-3.9-6.5-2.7-6 1.2zm8.3 28.7c1.1 3.5 4.3 5.3 7.9 4.8 3.2-.5 6.2-2.9 6.2-6.3 0-3.9-6-4.3-6-.4 0 .4 0 .4.1.1-.1.3-.1.3 0 .1-.6.7.5-.3-.2.3-.3.3.1 0-.5.2-.2.1-.2.1 0 0-.2 0-.4.1-.6.1-.7.1.3 0-.4 0-.2 0-.4 0-.6-.1.3.1.3 0 0 0-.2-.1-.3-.1-.3-.2l.3.3c-.2-.3-.2-.3-.1-.1-.5-1.6-1.9-2.7-3.6-2.4-1.4.4-2.7 2.1-2.2 3.6zm28.5-13.3c4.9 1 8.9-5.2 6.5-9.3-.8-1.4-2.5-2.1-4.1-1.4-1.4.7-2.2 2.6-1.4 4.1.3.6 0-.5.1.1.1.8 0-.7 0 .1 0-.6 0-.2-.1.1.1-.5 0-.1-.1.1-.3.5.2-.4-.1.1-.3.5.3-.3-.2.1.3-.2.4 0 0 0h.2c-.2 0-.3 0-.5-.1-1.6-.3-3.1 1.3-3.2 2.8 0 1.9 1.3 3 2.9 3.3zm-8.1-116.3c-3.6 3.5-4.7 9.2-1.9 13.6 1 1.6 3.2 2.4 4.7.9 4.2-3.9 4.6-10.2 1.2-14.7-.9-1.1-2.4-1.2-3.6-.7-5 1.9-7 7.8-5 12.5 1.5 3.6 6.9.9 5.4-2.7-.8-1.9.6-3.7 2.3-4.3-1.2-.2-2.4-.5-3.6-.7 1.4 1.8 1 4.6-.6 6.1 1.6.3 3.1.6 4.7.9-1.3-2-1.3-4.6.5-6.3 2.7-2.7-1.3-7.3-4.1-4.6zm-75.8 1.3c3.4-2.1 6.9-3 10.9-2.5 3.9.5 4.3-5.6.4-6-4.9-.6-9.8.5-14 3.1-3.2 2.1-.5 7.5 2.7 5.4zm-3.6 187.6c-10.6-7.7-18.5 7.1-21.9 14.9-3.8 8.8-6.1 19.8.9 27.6 2.6 2.9 7.2-1.1 4.6-4-4.8-5.3-3.2-12.7-.9-18.8 1.6-4.3 7.2-19.5 13.9-14.7 3.2 2.3 6.6-2.7 3.4-5z"/><path d="M476 649.6c-7.4 5.9-10.6 16.2-7.5 25.2 1.2 3.6 7.2 2.5 5.9-1.2-2.4-7.1-.3-14.8 5.6-19.5 3.1-2.4-.9-7-4-4.5zm7.8 4.1c-3.1 5.6-4 12-1.9 18.1 1.2 3.6 7.2 2.5 5.9-1.2-1.5-4.5-1.4-9.2 1-13.4 1.9-3.4-3.1-6.9-5-3.5zm69.2-12.3c8.2 2.2 11.5 12.9 6.2 19.4-2.5 3 2.5 6.4 5 3.4 7.8-9.4 2.5-25.4-9.2-28.5-3.7-1-5.7 4.7-2 5.7z"/><path d="M549.9 651.7c1.5 4.8 1.6 9.5 0 14.3-1.2 3.7 4.5 5.7 5.7 2 1.9-5.7 2-11.7.2-17.5-1.1-3.7-7.1-2.5-5.9 1.2zm-82.2-23.9c-1.2 19.6-5.7 38.9-13.5 57-3.9 9-8.5 17.6-13.9 25.8-5.2 7.9-11.6 15.1-14.5 24.3-1.2 3.7 4.5 5.7 5.7 2 2.9-9.3 9.9-16.7 15.1-24.8 5.3-8.4 9.9-17.2 13.7-26.3 7.6-18.2 12.1-37.8 13.3-57.5.4-4-5.6-4.4-5.9-.5z"/><path d="M438.3 720.3c-6.4 6.3-8.5 16.2-4.6 24.4 3.7 7.9 12.7 12.4 21.2 11.6 10.4-1 18.6-10.6 25.3-17.7 7.8-8.2 14.7-17 20.9-26.5 2.1-3.3-2.9-6.7-5-3.4-4.9 7.5-10.2 14.6-16.1 21.2-5.7 6.4-12.1 13.9-19.5 18.2-6.2 3.6-14.4 2.5-19.2-3.1-5-5.8-4.2-15 1.1-20.3 2.6-2.5-1.4-7.1-4.1-4.4z"/><path d="M480.5 733.7c2.5 6.5 5.5 13.3 12.1 16.5 6.4 3 12.5.9 16.9-4.2 10.1-11.8 16.3-27 19.2-42.1.7-3.8-5.3-4.2-6-.4-2.4 12.1-7.2 23.7-14.3 33.9-3 4.4-6.8 10.2-12.9 7.5-5.5-2.4-7.6-8.7-9.6-13.9-1.4-3.6-6.8-.9-5.4 2.7z"/><path d="M525.4 713.1c1.4 7.4 4.3 14.4 8.5 20.6 3.7 5.4 9.6 12.5 16.4 13.7 7.3 1.3 12.5-5.6 15.7-11.2 3.8-6.9 5.7-14.6 5.3-22.5-.2-3.8-6.2-4.3-6-.4.3 6-.6 11.8-3.1 17.3-2 4.5-6.7 13.3-12.7 10.1-4.9-2.6-9.1-7.9-11.9-12.5-3.1-5-5.1-10.5-6.2-16.2-.7-3.9-6.7-2.7-6 1.1zm39.7-45.7c3.6 8.1 7.2 16.2 10.7 24.4 2.5 5.7 6.1 15.7-1.7 19-3.6 1.5-.9 6.9 2.7 5.4 8.4-3.5 9.3-13.6 6.8-21.2-3.4-10.4-8.7-20.3-13-30.3-1.7-3.5-7.1-.8-5.5 2.7zm-67.5-25.8c3.9.3 4.3-5.8.4-6-3.9-.3-4.3 5.7-.4 6z"/><path d="M497.1 451.3c0 .4-.1.9-.1 1.3 0 .8.2 1.6.7 2.2.5.6 1.3 1 2.1 1s1.6-.2 2.2-.7c.6-.6 1-1.3 1-2.1 0-.4.1-.9.1-1.3 0-.8-.2-1.6-.7-2.2-.5-.6-1.3-1-2.1-1s-1.6.2-2.2.7c-.6.6-1 1.3-1 2.1zm65.7 8.7c3.9.3 4.3-5.8.4-6-3.9-.2-4.3 5.8-.4 6z" fill="#fff"/><path d="M676.9 483c10.1-6.1 21.6-9 33.4-8.2-.8-1.6-1.5-3.1-2.3-4.7-4.7 8.5-11.7 15.1-20.5 19.1-3.5 1.6-.8 7 2.7 5.4 9.7-4.4 17.7-11.8 22.8-21.1 1.1-2 .2-4.6-2.3-4.7-12.8-.8-25.5 2.2-36.5 8.9-3.3 1.9-.7 7.4 2.7 5.3z"/></svg>
+ data/BoatTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M418.1 794.8c82.3 4.8 164.6-5.3 246.4-15.3 25.9-3.2 32.5 1.6 54.5-12.4s31-42 34-68c-88.5 26.5-172.1 37.4-263 21.2-38-6.8-193.8-86.2-190.7-43.3 5.8 82.5 78.5 116.4 118.8 117.8z" opacity=".7" fill="#a67108"/><path d="M345 424.8c22-70.1 63.1-134.8 120.3-181-25.8 115.4-30.4 235.6-13.2 352.7 39.5 77.9-72.2 31-76.5 30.2-42.9-7.8-45-7.9-46.2-21.4-4.9-53.2.4-132 15.6-180.5zm179.5-37c1.6 81.3-1 162.6-7.9 243.6 20.7-8.5 41.9-15.7 63.5-21.3 22.1-5.8 32.8-30.6 22-50.7-2.8-5.2-5.1-10.2-6.5-14.6-29.6-89.7-69.7-230.2-72.1-269.4" opacity=".7" fill="#ebf5f7"/><path d="M647.4 165.7c-16.4-2.9-40.9-14.4-63.8-18.4-12.3-6.9-25.4-12.4-39-16.2-5.3-1.5-10.8-2.7-16.2-1.7-10.8 2-18.4 12.6-20.4 23.4-2 10.9.5 22 3 32.7 8.2.4 16.5.6 24.8.6 14 6.1 46.2.6 68-4.7 5.3-.7 10.7-1.6 16-2.5l-.9-1.6c1.5-.5 2.8-.9 3.9-1.2 8.5-2.9 16.7-6.3 24.6-10.4z" opacity=".7" fill="#f74545"/><path d="M324.4 630.6c-15.9-61.1-12.2-126.1 6.2-186.3 16.1-52.5 46.2-99.8 79.1-143.4 17.9-23.7 37.1-46.5 57.8-67.8 3.6-3.7-2-9.3-5.6-5.6-38.6 39.5-72.9 84.2-101.1 131.7-13.7 23.1-25.9 47.2-34.5 72.6-10.3 30.3-16.8 62-19 93.9-2.6 35.9.4 72.1 9.5 107 1.2 4.9 8.9 2.8 7.6-2.1zm156.3-414.4c-12.2 16.9-17.4 37.4-20.2 57.7-3.2 23.3-4.8 46.9-6.2 70.4-2.1 35.5-3.1 71.1-1.8 106.7 1.1 29.2 3.2 58.3 6 87.4 3.1 31.5 7.1 63 13.3 94 2.6 13.2 5.7 26.3 9.7 39.2 3.1 10.1 6.8 20.3 12 29.5 1 1.8 2.1 3.5 3.3 5.2 2.9 4.2 9.8.2 6.9-4-5.4-7.7-9-16.5-12.1-25.4-4.1-11.9-7.3-24.2-10-36.5-6.6-29.8-10.7-60.2-14-90.5-3.2-29.6-5.5-59.3-6.8-89-1.4-31.6-1.2-63.2.2-94.8 1.1-24.5 2.8-49 5.2-73.4 2-20.1 4.5-40.9 13.4-59.3 2.2-4.6 4.9-8.9 7.8-13 3.2-4.3-3.7-8.3-6.7-4.2z"/><path d="M332.2 657.2c38.5-10.4 82-4.6 118 11.7 11.6 5.3 22.7 11.8 32.9 19.5 4.1 3.1 8-3.8 4-6.9-35.4-26.6-81.5-39.6-125.6-37-10.6.6-21.1 2.2-31.4 5-5 1.4-2.9 9.1 2.1 7.7zM497.6 207l-2.1 248.1-.6 70c0 5.1 7.9 5.1 7.9 0l2.1-248.1.6-69.9c.1-5.2-7.9-5.2-7.9-.1z"/><path d="M499 269.6c19.7 80.8 26.9 164.4 21.3 247.4-1.6 23.2-4.1 46.3-7.7 69.3-.8 5 6.9 7.2 7.7 2.1 12.9-83.3 13-168.2.2-251.5-3.6-23.3-8.2-46.5-13.8-69.4-1.2-5-8.9-2.9-7.7 2.1zm5.3-134c2.9-2.4 1.2-7.1-2.2-8-4.1-1.1-6.2 2.9-6.4 6.3-.4 10.2.4 20.6.6 30.8.4 20.8.8 41.6 1.2 62.3.1 5.1 8 5.1 7.9 0-.3-15.8-.6-31.5-.9-47.2-.1-7.7-.3-15.3-.5-23-.1-3.9-.2-7.9-.2-11.8 0-2-.1-3.9-.1-5.9v-2.6c0-.8.4-2.8-.3-2.2-.9.4-1.9.8-2.8 1.2-.9-1-1.8-1.9-2.8-2.9.4-.9.8-1.9 1.2-2.8l-.3.3c-4 3.1 1.7 8.7 5.6 5.5z"/><path d="M501.4 139.3c22.2-10.6 47.8-4.8 69.8 3 11.9 4.2 23.5 9.1 35.5 12.9 11.5 3.8 24 7.4 36.2 5.1 11.4-2.1 21.3-10.9 22.2-22.9.4-5.1-7.6-5.1-7.9 0-.8 10.4-12 15.5-21.2 15.6-11.8.2-23.7-4.2-34.7-8.1-22.1-7.9-43.8-17.8-67.6-19.2-12.5-.7-25 1.2-36.4 6.6-4.5 2.3-.5 9.2 4.1 7z"/><path d="M518.9 194.8c2.4-1 6.8-2.1 10.1-2.6 4.2-.7 8.4-1 12.6-1.2 10.5-.6 21-.7 31.6-1.1 22.6-.9 46.5-2.7 66.9-13.4 11.3-5.9 20.6-14.9 26.5-26.2 2.4-4.5-4.5-8.5-6.9-4-10.5 20.1-31.4 28.8-52.7 32.5-21.4 3.8-43.2 2.9-64.8 4.1-9.2.5-18.7 1.2-27.2 5-4.8 2.1-.7 8.9 3.9 6.9zM287.2 649.2c-.1 21.5 3.6 43.1 8.5 63.9 4.4 18.7 11.2 37.1 23.7 51.9 6.5 7.7 14.4 14.1 23.5 18.3 4.6 2.2 8.6-4.7 4-6.9-20.7-9.7-32.9-30.1-39.6-51.1-3.8-11.8-6.2-24-8.4-36.1-2.4-13.2-3.9-26.6-3.8-40.1.1-5-7.9-5-7.9.1z"/><path d="M291.3 657.8c5.2-.5 10.2-.2 15.2 1.2 4.9 1.3 7-6.3 2.1-7.7-5.7-1.5-11.5-2.1-17.3-1.5-5 .5-5.1 8.5 0 8z"/><path d="M299.5 653.2c8.6 20 17.3 39.9 25.9 59.9 2 4.7 8.9.6 6.9-4-8.6-20-17.3-39.9-25.9-59.9-2.1-4.7-9-.6-6.9 4zM344 784.3c6.7 3.8 13.9 6.6 21.3 8.5 5 1.2 7.1-6.4 2.1-7.7-6.8-1.7-13.3-4.2-19.4-7.7-4.5-2.5-8.5 4.4-4 6.9z"/><path d="M352.9 773l11.1 21c2.4 4.5 9.2.5 6.9-4l-11.1-21c-2.4-4.5-9.3-.5-6.9 4zm408.7-78.7c-3 18.4-7.8 35.8-14.3 51.6-2 5 2.9 9.7 4.9 4.7 6.7-16.5 11.7-34.7 14.9-53.9.9-5.7-4.6-8.2-5.5-2.4z"/><path d="M363.5 798.3c49.4 6.7 99.3 9.6 149.1 8.5 49.6-1.2 99.2-6.2 148-15.2 27.7-5.1 55.2-11.4 82.4-18.9 4.9-1.4 2.8-9-2.1-7.7-47.5 13.2-96.1 22.7-145.2 28.2-48.8 5.5-98 7.1-147 4.9-27.8-1.2-55.6-3.7-83.1-7.5-2.1-.3-4.2.5-4.9 2.8-.5 1.8.7 4.6 2.8 4.9zm-2.4-68.7c28 9.8 57.9 14 87.5 12.2 5.1-.3 5.1-8.2 0-7.9-29 1.8-58-2.3-85.4-11.9-4.8-1.8-6.9 5.9-2.1 7.6zm338.8 25.9c11.8-.9 23.7-1.8 35.5-2.6 5.1-.4 5.1-8.3 0-7.9-11.8.9-23.7 1.8-35.5 2.6-5 .3-5.1 8.2 0 7.9zm-203.3-118c3.5 20.4 7 40.8 10.6 61.3.9 5 8.5 2.9 7.7-2.1-3.5-20.4-7-40.8-10.6-61.3-.9-5.1-8.5-3-7.7 2.1zm40.9 40c17.4-28.4 41.2-52.6 69.4-70.4 4.3-2.7.3-9.6-4-6.9-29.3 18.5-54.2 43.7-72.3 73.2-2.6 4.4 4.2 8.4 6.9 4.1zm-22.6-441.7c11.9 48.2 25.7 95.8 40 143.3 13 43.3 26.1 86.6 37.1 130.5 6.9 27.7 13.1 55.5 18.4 83.5 1 5 8.6 2.9 7.7-2.1-9.1-47.7-20.7-94.7-34-141.4-12.5-43.8-26.2-87.2-38.7-131-8.1-28.2-15.7-56.5-22.8-84.9-1.2-5-8.9-2.9-7.7 2.1zm-18.8 262.6c-1.3 33.7-.3 67.5 3 101 .5 5 8.4 5.1 7.9 0-3.3-33.6-4.2-67.3-3-101 .3-5.1-7.6-5.1-7.9 0z"/><path d="M307.8 660.8c24.7 15.9 52.8 25.5 81 33.2 30.4 8.3 61.2 15.6 92.3 21.4 61.1 11.4 123.8 16.1 185.5 6.9 33.3-5 65.8-14.2 96.4-28.1 4.6-2.1.6-9-4-6.9-54 24.6-113.9 33.3-172.8 31.9-62.5-1.5-124.1-14.2-184.4-29.9-31.2-8.2-62.5-17.7-89.9-35.3-4.4-2.9-8.4 4-4.1 6.8z"/></svg>
+ data/BookTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M466.2 676.9c-6.3-3.6-14.2-4.2-21.7-4.6-56.4-3.1-113.7-5.5-168.7 5.8-4.3-8.8.9-19.4 9.3-25.5 8.3-6.1 19.2-8.7 29.6-11.2-16.7 4-34.4-4.3-47.6 6.2-12.9 10.3-20.4 38.7-27.6 52.6-1 2-2 4.6-.3 6.2 1.5 1.4 4 1.2 6.1.9 75-11.5 151.3-15.9 227.3-13.3 3.8-5.6-.1-13.4-6.4-17.1zm278.7-47.2c-.5 8.5-.9 16.9-1.4 25.3-.1 2.3-.3 4.8-1.9 6.6-2.2 2.5-6 2.7-9.4 2.8-54.6.4-114.5-5.6-168.3 1.8.1.7.3 4.3.6 8.7-4.4 4.5-8.3 14.1-11.4 16.6-15.2 12.4-36.4 8.1-54.3 10.2-5.3-9.9-10.9-19.6-17-29.1-4.9.6-7.3 6.9-5.6 11.5s5.8 7.8 9.9 10.6c3.2 2.2 6.5 4.5 8.7 7.5-1.6.3-3.2.7-4.8 1.1 18.9 14.3 49.8 13.9 69.7 1.5 3.3-2 7.9-6.1 11.3-10.9 57.1-5.1 112-9.9 168.6-1 15.9 2.5 32.3 5.6 48.1 2.5-6.3-25.4-21.6-48.9-42.8-65.7z" opacity=".7" fill="#b0581a"/><path d="M263.4 597c57.4-20.9 120.4-5.6 179.4 9.9 22.5 5.9 47.3 13.5 59.5 34 3.7 6.3 12.3 14.2 15.8 7.7.7-1.4.8-3 .8-4.5.8-48 1.5-96 2.3-144 .1-8.6.2-17.5-2.5-25.6-3.3-9.9-10.3-17.9-17.7-25.1-29.4-29-102.2-85.3-140.8-46.6-21.8 21.8-48 52.8-61.2 80.2-17.2 35.6-19.7 77.5-35.6 114zm262.1 56.6c63.5-48.7 152.1-82.5 230.9-68.4-1.9-17.8-7.9-34.8-13.8-51.6-12.6-35.5-25.2-71-37.7-106.5-.7-2-1.5-4.2-3.3-5.3-1.7-1.1-3.9-1-6-.9-41.9 3.1-130 15.5-156 54-10.7 15.9-8.3 45.3-9.7 63.4-2.7 33.9-7 81.3-4.4 115.3z" fill="#fff5c9" opacity=".7"/><path d="M299 647c-4.3 1.4-8.8 2.9-12.1 6s-5 8.5-2.6 12.4c66.7-20.8 140.2-18.9 205.9 5.2 4.3-4.7 8.6-9.4 12.9-14.2-1.7-13.9-10.3-26.8-22.5-33.6-8.7-4.9-18.7-6.7-28.5-8.5-28.6-5.1-57.1-10.3-85.7-15.4-16.4-3-87.6-18-88.8 9.3-1.3 27.7 56 9.1 70 22.7-15.5 6.8-32.5 10.9-48.6 16.1zm451.9 16.8c2.2-12.9 1.5-26.2-1.8-38.9 7.3-9.3 7.9-23.4 1.3-33.3-8-12-98.8 3.2-112 6.5-22.8 5.6-72.6 34.3-96.8 53.4-27.2 21.5 67.9 17.6 89 17.3 40.2-.5 80.3-2.1 120.3-5z" fill="#ccbf7f" opacity=".7"/><path d="M507.4 670.8c-6.6-4.3-16.3 1.9-17 9.8s5.5 15 12.8 17.9c7.3 2.9 15.5 2.4 23.3 1.4 6.3-.8 12.7-1.9 18.1-5.2 5.4-3.3 9.6-9.3 9-15.6-.6-6.7-6.3-12.1-12.7-14.2-6.4-2.1-13.3-1.5-20-.7-9.8 1.2-19.4 3-29 5.4" opacity=".7" fill="#733911"/><path d="M244.3 476.3c3 3.2 6.7 5.6 10.8 7.1-5.3 11.6-10.6 23.1-16.2 34.6 10.5-5.8 22.1-9.5 34-10.7 6.3-15.4 15.2-29.7 26.1-42.3-15.6 1.7-31.2 3.4-46.8 5-6.9.7-14.8 2.1-18.4 8" opacity=".7" fill="#ff4000"/><path d="M577.8 460.5c-1 18.2-1.9 36.3-2.7 54.5 11.9 4.4 25.6 3.6 36.9-2.2l-.9-58.2c-14.3 1.6-28.4 4.6-42.2 9" opacity=".7" fill="#ba998e"/><path d="M352.6 382.1c-41.5 50.4-73.9 108-95.1 169.8-6 17.5-11.1 35.4-15.3 53.5-.8 3.5 2.7 5.8 5.7 4.4 35-15.8 74.1-18 111.8-13.7 19.3 2.2 38.4 6.2 57.2 11.1 16.7 4.3 33.7 8.9 49.5 16 16.5 7.4 31.9 17.9 40.6 34.3 2.4 4.4 9.1.5 6.7-3.9-16.7-31.4-54-42.7-86-51.5-38.5-10.6-78.8-18.1-118.9-15.1-22.4 1.7-44.3 6.8-64.9 16.1 1.9 1.5 3.8 2.9 5.7 4.4 14.5-62.6 40.3-122.4 75.9-175.9 10.1-15.2 21-29.8 32.5-43.9 3.3-3.9-2.2-9.4-5.4-5.6z"/><path d="M354.5 390.1c50.6.9 100.4 20 138.9 52.9 10.8 9.2 20.6 19.5 29.5 30.6 3.1 3.9 8.6-1.6 5.5-5.5-32.3-40.8-79.2-69.5-130-80.6-14.4-3.1-29.1-4.9-43.9-5.1-5-.2-5 7.6 0 7.7z"/><path d="M521.2 468.6c2.7 28 2.7 56.2 2 84.4-.6 28.4-1.5 56.7-2.3 85.1-.1 5 7.6 5 7.8 0 .8-28.3 1.7-56.7 2.3-85.1.6-28.2.6-56.3-2-84.4-.5-4.9-8.2-5-7.8 0z"/><path d="M531.5 475.2c28.3-36.9 74.2-53.6 118.7-60.4 11.6-1.8 23.3-2.9 35.1-3.5 5.8-.3 11.7-.7 17.5-.5 6.8.2 11.2 3 14 9.1 2.9 6.2 4.6 13.1 6.7 19.6 2.4 7.4 4.8 14.7 7.2 22.1 4.7 14.5 9.4 28.9 14.1 43.3 10.8 33.3 21.7 66.5 32.5 99.8 1.5 4.7 9.1 2.7 7.5-2.1-10.2-31.3-20.4-62.7-30.7-94-5.1-15.5-10.1-31.1-15.2-46.6-4.7-14.5-8.7-29.8-14.5-43.9-2.2-5.2-5.4-10.2-10.6-12.8-5.6-2.8-12.2-2.4-18.3-2.2-12.3.4-24.5 1.2-36.7 2.7-24.3 3-48.4 8.4-71.1 18-24.7 10.5-46.6 26.1-63 47.4-2.9 4.1 3.8 8 6.8 4z"/><path d="M537.4 649.2c50.4-41.7 116.7-62.7 181.9-57.5 18.4 1.5 36.5 5.1 54.1 10.7 4.8 1.5 6.8-6 2.1-7.5-64.4-20.5-135.7-13.4-195.7 17.2-17.1 8.7-33.1 19.4-47.9 31.6-3.8 3.2 1.7 8.7 5.5 5.5zm-240-190.6c-12.7-.1-25.3 1.6-37.5 5.1-6 1.8-11.8 4-17.5 6.6-4 1.8-9.8 3.9-9.9 9.2 0 3 2.1 5.1 4.6 6.4 1.5.8 7.5 1.9 8.2 3.6.1.3-2.9 4.6-3.3 5.3-1.7 2.8-3.5 5.7-5.2 8.5-3.8 6.1-7.6 12.3-11.3 18.4-1.8 2.8 1.2 6.7 4.4 5.7 11-3.4 22-6.7 33-10.1 4.8-1.5 2.7-9-2.1-7.5-11 3.4-22 6.7-33 10.1 1.5 1.9 2.9 3.8 4.4 5.7 6.5-10.6 14.1-21.1 19.7-32.2 3.7-7.3-2.5-11.1-8.5-13.4-.4-.2-2.9-1.5-3.3-1.4-.1 0-.2-.1-.3-.2-.2 1.5.2 1.9 1 1.2.9 0 2.5-1.3 3.4-1.7 5.7-2.7 11.6-5 17.7-6.8 11.5-3.4 23.4-4.9 35.4-4.8 5.1.1 5.1-7.7.1-7.7zm62.3-5.4c15.8-4.4 32.4-9 48.8-4.8 15.8 4.1 30.4 13.1 44.9 20.4 4.5 2.2 8.4-4.5 3.9-6.7-15.5-7.8-31.2-17.6-48.2-21.5-17.3-4-34.7.4-51.4 5.1-4.9 1.3-2.8 8.8 2 7.5zm123.5 30.1c2 6.7 8.2 11.3 15.2 11.4 5 0 5-7.8 0-7.8-3.5 0-6.7-2.3-7.7-5.7-1.5-4.8-9-2.7-7.5 2.1zM349.5 503c16-2.5 32.2-.9 47.4 4.5 4.7 1.7 6.8-5.8 2.1-7.5-16.6-5.9-34.2-7.3-51.5-4.5-5 .8-2.9 8.3 2 7.5zm77 2.5c6.6 2.8 13.4 4.2 20.6 4.6 5 .3 5-7.5 0-7.8-6.4-.4-12.6-1.9-18.5-4.4-4.6-1.9-6.6 5.6-2.1 7.6zm56.1 19.6c2 1.3 3.9 2.6 5.9 3.9 1.7 1.1 4.4.4 5.3-1.4 1-2 .4-4.1-1.4-5.3-2-1.3-3.9-2.6-5.9-3.9-1.7-1.1-4.4-.4-5.3 1.4-1 2-.4 4.1 1.4 5.3zm-127.1 23.8c20.9-3 42.5-.2 61.9 8.1 4.5 2 8.5-4.8 3.9-6.7-21.5-9.2-44.7-12.3-67.9-8.9-4.9.7-2.8 8.2 2.1 7.5zm214.2-80.3c-1.9 14.3-1 28.7 2.6 42.7 1.2 4.8 8.7 2.8 7.5-2.1-3.4-13.3-4.1-27-2.3-40.6.6-4.9-7.2-4.9-7.8 0zm14.4-6c6.6-1.7 13.2-2.9 19.9-3.6 2.4-.2 5.4-1 7.8-.4 3.1.8 2.4 5.5 2.5 8 .5 13.1.6 26.3.2 39.4-.1 5 7.7 5 7.8 0 .2-8.4.3-16.8.2-25.1-.1-4.5-.2-8.9-.4-13.4-.1-3.4.1-7.2-1.1-10.5-2.4-6.3-8.7-6.5-14.5-6-8.3.7-16.4 2.1-24.5 4.1-4.8 1.2-2.7 8.7 2.1 7.5zm55.4-5.4c12.5-3.3 25.3-4.4 38.3-3.5 5 .4 5-7.4 0-7.8-13.6-1-27.2.3-40.3 3.8-5 1.3-2.9 8.8 2 7.5zm.8 45.5c16.4-.4 32.7-3.2 48.3-8.5 4.7-1.6 2.7-9.1-2.1-7.5-15 5-30.4 7.8-46.2 8.2-4.9.1-5 7.9 0 7.8zm-65.1 75.5c20.3-9.7 41.8-16.6 63.9-20.7 11-2 22.1-3.3 33.3-3.9 9-.5 21.6-2.3 28.7 4.5 3.6 3.5 9.1-2 5.5-5.5-7.7-7.4-18.7-7.3-28.7-7-12.1.3-24.2 1.6-36.2 3.6-24.4 4.1-48 11.7-70.4 22.3-4.5 2.1-.6 8.8 3.9 6.7z"/><path d="M576.2 521.6c7.2-1.3 14.5-2.5 21.7-3.8 4.9-.9 2.8-8.4-2.1-7.5-7.2 1.3-14.5 2.5-21.7 3.8-4.9.8-2.8 8.3 2.1 7.5zm-308.3 77c1.2 11.2 2.3 22.4 3.5 33.5.5 4.9 8.3 5 7.8 0-1.2-11.2-2.3-22.4-3.5-33.5-.5-4.9-8.3-5-7.8 0z"/><path d="M275.7 632h61.1c5 0 5-7.8 0-7.8h-61.1c-5 .1-5 7.8 0 7.8z"/><path d="M342.7 627.8c-25.4.5-49.9 11.1-67.7 29.2-3.5 3.6 2 9.1 5.5 5.5 16.4-16.7 38.8-26.5 62.2-27 5-.1 5-7.8 0-7.7z"/><path d="M275.5 652.9c1.2 7.2 2.3 14.5 3.5 21.8.8 4.9 8.3 2.8 7.5-2.1-1.2-7.2-2.3-14.5-3.5-21.8-.8-4.9-8.3-2.8-7.5 2.1z"/><path d="M283 677.8c14.4-7 30.9-8.3 46.5-10.5 17.3-2.4 34.7-4.5 52.1-5.3 33.3-1.5 66.5 2.7 98.3 12.7 4.8 1.5 6.8-6 2.1-7.5-33-10.3-67.5-14.6-102-12.9-17.6.9-35.1 3.1-52.5 5.5-16.4 2.3-33.3 3.9-48.4 11.3-4.5 2.1-.6 8.9 3.9 6.7zm105.1-43.2c34.4-3.7 69.2 4 98.8 22 4.3 2.6 8.2-4.1 3.9-6.7-30.6-18.7-67-26.9-102.7-23.1-5 .6-5 8.4 0 7.8zm108.1 46.8c-.5-1.5 3.6-5.5 4.5-6.4 2-1.9 4.2-3.4 6.6-4.7 4.7-2.4 10.1-3.6 15.4-3.6 6.1 0 12.2 1.5 17.8 3.8 2.9 1.1 5.7 2.5 8.4 4 1.2.7 7.8 3.7 8.1 4.6.6-1.5 1.2-2.9 1.8-4.4-.2.1-.3.2-.5.3 1-.1 2-.3 3-.4-.2-.1-.4-.1-.6-.2 1 1.2 1.9 2.5 2.9 3.8v-.4c.1-5-7.7-5-7.8 0v.4c0 1.8 1.2 3.2 2.9 3.8 1.5.5 2.8.3 4-.5 1.5-1 2.2-2.6 1.8-4.4-.9-3.6-4.8-5.3-7.8-7.1-3.9-2.4-8-4.5-12.3-6.3-7.8-3.2-16.3-5.3-24.8-4.7-7.2.6-14.4 2.8-20.4 7.1-4.6 3.3-13 10.9-10.6 17.3 1.8 4.7 9.3 2.7 7.6-2z"/><path d="M470.4 684.5c5.8 22.4 28.6 34.2 50.5 34.1 18.6 0 57.7-8.1 51.2-34.8-1.2-4.9-8.7-2.8-7.5 2.1 2.5 10.2-7.8 16.9-16 19.8-9.8 3.5-20.4 5.5-30.9 5-17.4-.8-35.2-10.6-39.8-28.4-1.2-4.7-8.7-2.6-7.5 2.2zm110.8-12.6c27.6-3.3 55.2 1.5 82.8 2.4 13.8.5 27.3-1 41-2.2 14.4-1.3 28.5-.5 42.5 3.4 4.8 1.3 6.9-6.2 2.1-7.5-13.8-3.8-27.9-5-42.1-3.8-14 1.1-27.8 2.8-41.8 2.5-28.2-.8-56.3-5.8-84.5-2.4-4.9.4-5 8.2 0 7.6zM756 590.8c.5 6.6 1 13.3 1.5 19.9 0 .6.7 4.5.4 5-.5.7-3 .8-3.7.9-3.4.6-6.8 1-10.3 1.3-13.2 1.2-26.5.6-39.5-1.6-4.9-.8-7 6.6-2.1 7.5 16.1 2.8 32.3 3.3 48.5 1.1 6-.8 14.5-.8 14.8-8.5.3-8.4-1.2-17.2-1.9-25.5-.3-5.1-8.1-5.1-7.7-.1zm-89.2 35.6c-21.8-3.8-43.9-.9-63.9 8.5-4.5 2.1-.6 8.8 3.9 6.7 18-8.5 38.4-11.2 58-7.7 4.9.9 7-6.6 2-7.5z"/><path d="M750.6 620.3v45.3c0 5 7.8 5 7.8 0v-45.3c0-5-7.8-5-7.8 0zm-481.4-3.5c-11 21.7-22.1 43.4-33.1 65.2-2.5 4.9-4.9 9.8-6.8 14.9-1.8 4.5-4 10.2-3.4 15.2 1.2 11.2 15.6 7.1 22.7 5.9 23.8-4 47.2-9.6 71.1-13.1 24.1-3.5 48.3-5.5 72.6-6.2 27.5-.8 54.9.2 82.3 2.9 5 .5 5-7.3 0-7.8-44.6-4.4-89.7-4.2-134.3.7-22.1 2.4-44 6.1-65.8 10.5-11 2.2-22 4.5-33.1 6.2-2 .3-6.8 2-8-.4-.7-1.4 1.1-5.3 1.5-6.8 1.6-5.3 3.9-10.3 6.4-15.3 11.3-22.7 23-45.3 34.4-67.9 2.5-4.5-4.2-8.5-6.5-4zm218.7 64.4c1.5 15.8 16.8 24.3 31.5 24.2 8.7-.1 18-2.2 26.2-5 6.1-2.1 12-6 12.1-13.1.1-5-7.7-5-7.8 0-.1 4.8-8.2 6.2-11.7 7.1-6.2 1.7-12.4 3.2-18.8 3.2-10 .1-22.6-5-23.7-16.4-.5-4.9-8.3-5-7.8 0zm77.3 29.8c70.1-6.1 140.8-5.4 210.8 2.2 5.1.5 10.1 1.1 15.2 1.7 3.7.5 7.7 1.6 11.4.5 5.5-1.7 9.2-7.7 3.7-11.7-4.1-2.9-8 3.8-3.9 6.7-1.2-.8 0-2.4-1.4-2.7-.3-.1-1.3.4-1.7.4-1.5.1-3.2-.4-4.7-.5l-12.6-1.5c-7.6-.9-15.2-1.6-22.8-2.3-15.8-1.5-31.5-2.5-47.4-3.3-31-1.5-62.2-1.7-93.2-.5-17.8.7-35.6 1.8-53.3 3.3-5 .3-5.1 8.1-.1 7.7z"/><path d="M754.5 624.7c8.3 14.7 17.5 28.8 27.7 42.2 8.5 11.2 22.9 25.6 17.3 40.9-1.7 4.7 5.8 6.7 7.5 2.1 5.8-15.9-5.5-30.8-14.8-42.7-11.5-14.7-21.8-30.2-30.9-46.4-2.5-4.4-9.3-.5-6.8 3.9z"/></svg>
+ data/BoyTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="974" height="1118"><style>.st0{fill:#fcdfc7}.st1{fill:#fff}</style><path class="st0" d="M419.7 692.2c-7.5 2-15 6.4-17.6 13.7s2.8 17.2 10.5 16.5c-4.6 4.5-9.4 9.2-11.5 15.2-2.1 6.1-.6 13.9 5 17 6.3 3.4 14.5-.8 18-7s3.4-13.8 3.3-20.9c-.2-13.3-.4-26.6-.7-39.9m173 148.5c9.6-10.2 16.3-23.1 19.3-36.8 2.1-9.7 2.2-20.4-2.8-29-11.1-19-25-11.5-27.1 6.5-2.4 20.1 1.3 41.2 10.6 59.3z"/><path class="st1" d="M432.8 367.7c-3.9-.3-5.9 6-2.6 8 1.4-2 2.8-4.1 4.2-6.1"/><g opacity=".7"><path class="st0" d="M699.4 399.2c-2.8-15.9-20.2-28.2-35.7-23.8-1.8-11.5 3.4-22.9 7.7-33.7 4.3-10.9 7.8-23.4 2.8-33.9s-22.3-14.8-28.1-4.6c-11.8-18.5-23.9-37.2-40.5-51.5-16.6-14.3-38.7-23.8-60.4-20.4-20.3 3.2-37 17-54.5 27.8-15.6 9.7-34.9 17.4-52.2 12.9-9.9 6.1-21.4 10-32.9 12.4-16 3.3-32.3 4.8-48.5 6.9-2.9.4-5.7 1-8.5 1.6-10.6 2.6-20.9 1.2-30.5-3.7-3.9 28.7 4.3 58.9 22.5 81.4-15.4-.9-31.7-1.5-45.2 5.9-13.5 7.4-22.1 26-13.5 38.8 5.5 8.3 16.4 11.6 26.3 10.8 9.9-.8 19.2-5.1 28.2-9.3 13.4 46.6 55.8 83.4 103.8 90.1 11.1 1.5 23.2 1.9 31.9 9s6.3 28.6-4.4 31.7c7.2 4.6 12.5 9.3 21 10.1 8.5.8 31.8-1.8 33.7-10.1.9-4-8.5-14.6-7.4-18.5 2.8-10.1 16-11.9 26.4-13.3 43.3-5.8 81.1-41.1 90-83.9 13.2 9.3 31.1 12.5 45.9 6.1 14.5-6.3 24.9-23 22.1-38.8z"/><path d="M342.5 235.1c-12.3 19.4-18.8 42.2-19.2 65.1-.2 13.8 15.5 22 26.6 13.8 13.6-10.1 31-16 48-18.2 28.3-3.6 57 .7 85.5-.5s59-9.4 76.5-31.8c4.5-5.8 8.1-12.4 13.7-17.2 5.5-4.8 14-7.4 20.3-3.6 7.6 4.7 7.8 15.4 10.5 23.9s14.8 16 19.6 8.5c-7.7 9.6-.2 25.8 11.8 28.7 12 2.9 34.7-5.1 40.2-16.1 5.5-11-5.2-24.2-8-36.2-10.5-43.6-53.1-77.3-97.9-77.5-14.5 0-32.6 1.2-39.3-11.7-3.4-6.6-2.6-15.6-8.5-20.2-9.5-7.4-21.2 5-30.8 12.1-15.5 11.4-37.2 7.9-50.6-4.8 3 29.7-16 27.4-38.2 36.3-24.7 9.8-46.1 27.2-60.2 49.4z" fill="#a87532"/><path d="M554.1 408.1c3.1-3.8 6.5-7.7 11.2-9 4.7-1.3 10.8 1.6 10.9 6.4.1 4.1-4.1 7.2-8.2 7.5-4.1.3-8-1.5-11.6-3.2m-126.6 2.8c-.6-6.8-10.1-10.7-15.4-6.5-5.3 4.2-3.9 14.1 2.4 16.8s14.4-2.7 14.5-9.5" fill="#fca586"/><path d="M376.7 574c-22.7 10.8-43.4 27.9-53.5 51s-19.1 48 9.8 70.5c19.9 15.4 50.7 19.8 67.1.7 5.6-6.5 7.6-18.8-.4-22-4.6-1.9-9.9.7-14.8.2-12.5-1.2-14.6-20.6-5.7-29.4s22.5-10 34.8-12.1 26.1-6.9 30.6-18.6c-2.5 36.7-4.9 73.4-7.4 110.1-.8 11.9-1.4 24.6 4.7 34.8 10.9 18.3 36.7 19.4 57.9 17 33.1-3.8 25.7 16.5 97.5-20.9 9.7-5.1 21.5-7.5 27.8-16.5 6.3-9 6.5-20.8 5.9-31.8-2.1-39.5-11.2-78.6-26.8-114.9-6.3-14.8-14.7-30.2-29.3-37.1-14.5-6.9-31.6-3.7-46.8 1.2-33.8 11.1-47.1 8.5-80.2 1.9-23.4-4.6-50 5.8-71.2 15.9z" fill="#76b869"/><path d="M450 902.5c-.2 11-.7 22.3 3.2 32.5s13.7 19.2 24.6 18.3c11.9-1 20.2-13 22.2-24.8s-.4-23.8-.5-35.7 3.1-25.1 12.9-31.9c.2 22.2.6 45.2 10.3 65.2 4.7 9.6 11.8 18.6 21.7 22.7 9.9 4.1 22.7 2.2 29.1-6.3 4.5-51.7 2.4-103.7.3-155.5-.2-4.1-.8-8.9-4.4-10.9-3.3-1.8-7.3-.2-10.8 1.2-42 17.6-81.5 8.7-121.5-7.9-6.7 13.8 6.3 45.3 8.6 61.7 3.3 23.7 4.7 47.5 4.3 71.4z" fill="#3593a1"/><path d="M457.3 971.2c-1-4.3-2-8.7-3-13 12.8-1.4 25.6-2.9 38.4-4.3 8.8 10.2 4.3 27.3-6.4 35.5s-25.2 9.3-38.6 8c-13-1.3-25.8-4.6-37.8-9.7-3.8-1.6-7.8-3.7-9.7-7.4-3.8-7.5 3.5-16 11.2-19.3 15.6-6.7 35.5-1.6 46 11.8m81.3 17c9.1 5.7 20.4 6.4 31.1 6.8 15.3.7 30.6 1.4 46 2 4.8.2 10.5-.1 12.9-4.2 2.2-3.8.3-8.6-2.1-12.2-13-19.6-41.1-27.3-62.3-17 2.2-5.5 1.4-12.1-2.1-16.8-17.3 5.5-57.2 20.4-23.5 41.4z" fill="#ebe5e4"/></g><path d="M435.4 185.1h-2.6" fill="#d19e5a"/><path d="M327.3 356.9c-20-35.5-18.8-79.8 2.6-114.4 2.4-3.9-3.8-7.5-6.2-3.6-22.8 36.7-23.8 84-2.6 121.6 2.3 4 8.5.4 6.2-3.6z"/><path d="M321.4 257.2c8.1-17.9 20-33.6 35.4-45.9 15.1-12.1 32.9-20.6 51-27 10.9-3.9 22.1-7.1 33.3-10 2-.5 3.5-3.4 2.1-5.3l-18-24.3c-1 1.8-2.1 3.6-3.1 5.4 17.3-2 35.2 2.3 49 13 2 1.5 4.1 1.3 5.6-.7 7.4-9.6 16.1-20.4 29.2-21.2 5.4-.4 11.2 1.2 14.1 6 2.3 3.9 2.3 8.5-1.1 11.6-3.4 3.1 1.7 8.2 5.1 5.1 4.9-4.4 6-11.3 3.7-17.3-2.6-6.9-8.8-11.1-15.9-12.2-18.3-2.9-31.2 11.4-41.2 24.4 1.9-.2 3.8-.5 5.6-.7-15.3-11.9-34.8-17.4-54.1-15.1-2.4.3-4.9 3-3.1 5.4l18 24.3c.7-1.8 1.4-3.5 2.1-5.3-38.8 10-78.9 24.8-105.4 56.4-7.6 9.1-13.8 19.1-18.6 29.9-1.7 4.1 4.4 7.7 6.3 3.5z"/><path d="M520.9 164.8c50.2-5.2 101.4 14 136.8 49.6 10 10 18.5 21.3 25.5 33.6 1-1.8 2.1-3.6 3.1-5.4-3.6-.4-7.2-.8-10.7-1.1-2.4-.2-4 2.5-3.5 4.5 10.4 42.2 6.2 87.5-12 127-1.9 4.2 4.3 7.8 6.2 3.6 19-41.3 23.6-88.4 12.7-132.6-1.2 1.5-2.3 3-3.5 4.5 3.6.4 7.2.8 10.7 1.1 2.8.3 4.3-3.2 3.1-5.4-25.8-45.3-73.2-77.1-124.5-85.4-14.6-2.4-29.4-2.9-44-1.4-4.5.7-4.5 7.8.1 7.4z"/><path d="M657.9 388.2c6-9 18.2-15.3 29-12.2 13.1 3.7 17.6 20.6 16.7 32.6-1 13.4-9 25.3-20.5 31.9-10.5 6-25.8 8.1-34.6-1.9-3-3.5-8.1 1.6-5.1 5.1 8 9.2 21.5 10.7 32.7 7.5 11.8-3.4 22.2-11.5 28.4-22.1 11.8-20.1 7.1-59.1-21.5-60.9-12.4-.8-24.5 6.4-31.3 16.4-2.6 3.9 3.6 7.5 6.2 3.6zm-316.7-15.8c-18.4-20.2-54.9-18.3-69.4 5.6-7 11.6-8.3 26.8-3.1 39.4 5 12 15.7 20.3 28.6 22.3 14.4 2.2 29.3-2.9 37.9-14.9 2.7-3.8-3.5-7.3-6.2-3.6-12.8 17.9-42.8 14.9-52.6-4.2-5-9.8-4.9-22.2-.2-32.1 4.9-10.3 14.4-16.9 25.5-18.8 12.5-2.1 25.8 1.9 34.4 11.3 3.2 3.5 8.3-1.6 5.1-5z"/><path d="M330.4 422.8c-.2 24.5 12.4 47 30 63.5 20.1 18.9 46.2 29.7 73 35.2 28.9 5.9 59.1 6.6 88.4 4.1 28.1-2.3 57.3-8.5 81.1-24.4 22.5-15 40.9-39.3 40.2-67.4-.1-4.6-7.3-4.6-7.2 0 .6 23.5-13.9 44.4-32.2 58-21.3 15.9-48.2 22.9-74.2 25.9-27.4 3.1-55.9 3.1-83.2-1.1-25.7-4-51.5-12.1-72.3-28-20.5-15.7-36.7-39.2-36.5-65.8.1-4.6-7.1-4.6-7.1 0zm58-141.7c1.5 18 20.5 22.5 35.5 23 15.5.6 32.8 1 45.8-8.8 3.6-2.7.1-9-3.6-6.2-10.6 8-24.1 8.3-36.9 8-11.3-.3-32.3-.5-33.6-16-.4-4.5-7.6-4.6-7.2 0z"/><path d="M457.1 285.8c14.8 13.3 35.4 16.3 54.4 12.1 21.4-4.7 39-18.9 53.1-35.2 8.4-9.8 15.8-20.3 23-31 2.6-3.8-3.6-7.4-6.2-3.6-14.6 21.5-30.5 44.3-54.2 56.6-20 10.4-47.3 12-65-3.9-3.4-3.2-8.5 1.9-5.1 5zm144.9-22c.5 4.7 1.4 9.3 2.7 13.9 1.1 3.6 2.3 7.8 5.9 9.6 3 1.6 6.6 1 9.6-.5 3.7-1.8 6.1-5.7 10.1-6.9-1.5-1.1-3-2.3-4.5-3.5 1.3 12.1 6.2 23.2 14.3 32.3 3.1 3.4 8.2-1.6 5.1-5.1-6.8-7.6-11.1-17.1-12.2-27.2-.2-2.2-2.1-4.2-4.5-3.5-2.3.7-4.2 1.8-6 3.2-1.8 1.4-4.1 4.4-6.5 4.6-4.9.6-6.2-13.5-6.7-17.1-.6-4.4-7.8-4.4-7.3.2zm-137.9 174c-2 6.7 1 13.7 6.5 17.8 6.4 4.7 15.1 4.5 22.2 1.8 6.3-2.4 13.2-6.8 14.3-14 1-6.4-3.8-13.2-10.6-12.9-4.6.2-4.6 7.4 0 7.2 4.6-.2 3.7 5.8 1.7 8.1-2.7 3.1-7.2 5-11.1 5.9-7.4 1.7-19-2.2-16.1-11.9 1.3-4.5-5.6-6.4-6.9-2zm9.6 88.5c5.9 7.5-.8 15.8-7.9 19-4.2 1.9-.6 8.1 3.6 6.2 12-5.4 18-19.3 9.3-30.3-2.8-3.6-7.8 1.5-5 5.1zm46.1-4.7c-3.6 10.1 5 21.5 15.6 21.2 4.6-.1 4.6-7.3 0-7.2-6.2.2-10.7-6.4-8.7-12.1 1.6-4.4-5.4-6.3-6.9-1.9z"/><path d="M451 544.7c3 8.8 8.5 16.3 16.8 20.7 8.8 4.8 19 5.6 28.9 5 22.8-1.5 44.6-11.4 60.7-27.6 3.3-3.3-1.8-8.3-5.1-5.1-14.1 14.2-33.1 23.4-53.1 25.3-17.2 1.6-35-2.2-41.3-20.2-1.5-4.3-8.5-2.5-6.9 1.9zm-27.7-176.2c-2.8 6-4 12.6-2 19.1 2 6.7 7.5 13 15.2 10.7 6.1-1.8 9.5-8.8 10.6-14.6 1.3-6.7.3-12.9-2.6-19-2-4.3-8.1-5.4-12-3.1-4.4 2.5-5.2 7.7-3.1 12 .8 1.6 1.1 3.6.9 5.4-.1.8-.3 1.9-.6 2.6-.1.5-.3.9-.6 1.2-.6 1.2-.8 1.5-.6.7 1.3-.8 2.6-1.5 3.9-2.2.2 0 .3-.1.5-.1 1.5.4 3 .8 4.4 1.2 1.8 1.1.8.3.6-1.5-.1-1.2.1-2.5.6-3.6 2-4.3 1.2-9.5-3.1-12-3.9-2.2-10.1-1.1-12.1 3.2zm115-4.2c-1.8 2.4-3.1 5.2-4 8-.4 1.2-.7 2.5-.9 3.8-.1 1-.3 1.9-.4 2.9-.1 1.3-.1 1.5 0 .6-.7 6.6 2.3 12.6 9.2 14.3 6.3 1.6 12.3-1.8 15.1-7.5 1.4-2.8 1.9-5.7 2.1-8.8.1-2.5-.1-4.2.7-6.4 1.7-4.4-1.9-9.6-6.1-10.8-4.9-1.4-9.1 1.7-10.8 6.1-1.1 2.8-1.2 5.8-1.3 8.8v2.2c-.1 1.1-.1 1.2 0 .4-.3 1-.3 1.2 0 .4.3-.4.8-.7 1.3-.9 1-.7 2.1-.9 3.4-.6 2.8 1 4 3.2 3.6 6.6.5-1.3.2-2.9.4-3.9.4-2.5 1.5-4.4 3-6.5 2.8-3.8.7-9.8-3.1-12-4.7-2.4-9.5-.5-12.2 3.3zm-94.9 115.3c40.6 18 92.1 7.7 120.4-27.2 2.9-3.6-2.2-8.7-5.1-5.1-26.1 32.3-74 43-111.8 26.1-4.1-1.8-7.8 4.3-3.5 6.2z"/><path d="M549.8 451.5c6.3-1 12.3.9 17.4 4.7 3.7 2.8 7.3-3.5 3.6-6.2-6.7-5-14.7-6.6-22.9-5.4-4.5.7-2.6 7.6 1.9 6.9zM431.1 769.3c40.7 27 106.8 42.1 142-2 2.8-3.6-2.2-8.7-5.1-5.1-33.2 41.6-95.2 26.2-133.3.9-3.8-2.5-7.4 3.7-3.6 6.2zm4 11.5c-9.9 9.6-6.1 25.4-4.8 37.5 1.8 16.9 3.7 33.8 5.5 50.7 3.3 30.6 4.1 63.5 17.4 91.8 2 4.2 8.1.5 6.2-3.6-6.2-13.2-9.2-27.6-11.2-42-2.1-14.8-3.4-29.8-5-44.6-1.7-15.3-3.3-30.6-5-45.9-.8-7.3-1.9-14.7-2.3-22.1-.4-5.9-.2-12.3 4.3-16.6 3.3-3.4-1.8-8.4-5.1-5.2z"/><path d="M468.9 973.2c-13.6-12.8-33.8-24.7-53.1-18.3-15.3 5.1-28.1 22.1-22 38.4 1.6 4.3 8.5 2.4 6.9-1.9-5-13.4 6.4-27 19.1-30.2 16.3-4.1 32.8 6.4 44 17.1 3.4 3.2 8.4-1.9 5.1-5.1z"/><path d="M392.9 995.2c34.4 13.6 73.8 15.3 109.2 4.6 4.4-1.3 2.5-8.3-1.9-6.9-34.3 10.4-72.1 8.6-105.4-4.6-4.3-1.7-6.2 5.2-1.9 6.9z"/><path d="M501.7 991c8.3-48.1 10.7-97 7.1-145.6-.3-4.6-7.5-4.6-7.2 0 3.5 48 1.3 96.3-6.9 143.7-.7 4.5 6.3 6.4 7 1.9zM577 778.8c4.3 4.7 4.5 11.8 4.3 17.8-.2 7.4-.9 14.8-1.3 22.1-1.1 16.3-2.1 32.7-3.2 49-2 30.6-1.5 63.1-12.2 92.2-1.6 4.3 5.3 6.2 6.9 1.9 8.7-23.7 9.6-49.4 11.2-74.4 1.7-26.9 3.5-53.8 5.2-80.6.7-11.1 2.3-24.2-5.8-33.1-3.1-3.4-8.2 1.6-5.1 5.1z"/><path d="M534.9 992.7c-7.7-43.7-18.1-87.1-22-131.4-1-11.9-1.6-23.8-1.2-35.8.1-4.6-7-4.6-7.2 0-1.5 44.7 8.2 89.4 16.7 133 2.3 12 4.7 24 6.8 36.1.8 4.5 7.7 2.6 6.9-1.9zm19.6-16.2c21.1-22.9 69-16.1 75.3 17.3.9 4.5 7.8 2.6 6.9-1.9-3.3-17.7-19.3-30.8-36.3-34.8-17.7-4.1-38.4.7-51 14.3-3.1 3.4 2 8.5 5.1 5.1z"/><path d="M530.8 995.9c23.8 6.3 48.5 8.1 72.9 5 4.5-.6 4.6-7.7 0-7.2-23.8 3-47.8 1.4-71-4.8-4.4-1.1-6.3 5.8-1.9 7zm-86.3-50.6c14 11.8 33.3 14.5 50 7.3 4.2-1.8.6-8-3.6-6.2-13.6 5.8-30.1 3.3-41.4-6.2-3.5-3-8.6 2.1-5 5.1zm82.4 12.4c12.5 3.1 25.7.8 36.2-6.7 3.7-2.7.1-8.9-3.6-6.2-9 6.4-19.9 8.7-30.6 6-4.6-1.2-6.5 5.7-2 6.9zm-91.1-116.9c10-6.3 18-15 23.4-25.5 2.1-4.1-4.1-7.7-6.2-3.6-4.8 9.4-11.9 17.3-20.8 23-3.9 2.4-.3 8.6 3.6 6.1zM571 604.1c7.8 54.2 11.1 108.9 10 163.6-.3 15.4-1 30.8-2 46.1-.3 4.6 6.9 4.6 7.2 0 3.7-55.2 2.8-110.6-2.6-165.7-1.5-15.4-3.4-30.7-5.6-46-.7-4.5-7.6-2.6-7 2z"/><path d="M440.1 609.2c-15 60.3-19.3 123.2-12.5 185 1.9 17.3 4.7 34.5 8.2 51.5 1 4.5 7.9 2.6 6.9-1.9-12.6-59.8-14.6-121.9-5.7-182.4 2.5-16.9 5.8-33.7 9.9-50.2 1.2-4.6-5.7-6.5-6.8-2zm119.5-66.4c.2 1.1.3 2.1.5 3.2.4.1.8.1 1.2.2.7.3 1.6.4 2.3.7 1.8.6 3.6 1.2 5.3 2.1 3.3 1.5 6.4 3.5 9.2 5.7 5.6 4.3 10.5 9.6 14.7 15.3 9 12.1 16 25.9 22.1 39.7 12.9 29.2 20.5 60.9 22.5 92.8 1.1 18 .5 36.2-2 54-.6 4.5 6.3 6.5 6.9 1.9 5.2-37.1 2.9-75-6.7-111.2-4.7-17.6-11.1-34.8-19.2-51.1-7.5-15.3-16.3-31.1-29-42.8-6.6-6.1-14.4-11.1-23.1-13.5-3.3-.9-7.8-1.4-9.9 2.1-1.8 3.1-.2 7 3.2 8 4.5 1.1 6.4-5.8 2-7.1zm33.1 216.9c12.4 2.2 24.9 4.4 37.3 6.6 4.5.8 6.5-6.1 1.9-6.9-12.4-2.2-24.9-4.4-37.3-6.6-4.5-.8-6.4 6.1-1.9 6.9z"/><path d="M622.5 762.2c4.3 26-3.1 53.4-19.8 73.7-2.9 3.5 2.1 8.6 5.1 5.1 18.5-22.5 26.4-52 21.6-80.7-.8-4.5-7.7-2.6-6.9 1.9z"/><path d="M598.5 790.8c6 15.7 3.7 34-6.8 47.3-2.8 3.6 2.2 8.7 5.1 5.1 12-15.3 15.6-36 8.6-54.3-1.6-4.3-8.6-2.4-6.9 1.9zM456.6 539.9c-40.3 10.8-78.1 30-110.6 56.2-8.1 6.5-15.8 13.4-23.2 20.7-7.4 7.3-15 15-20.5 23.9-5.4 8.5-8.7 19-4.8 28.8 3.7 9.3 12.5 15.3 20.6 20.5 21.6 14 45.6 24.3 70.6 30.3 4.5 1.1 6.4-5.8 1.9-6.9-20.8-5-40.7-12.9-59.2-23.7-8.2-4.8-17.9-9.9-23.9-17.5-7.1-8.8-4.3-19.2 1.1-28 5.2-8.3 12.5-15.5 19.4-22.4 6.9-6.9 14.1-13.4 21.6-19.5 15-12.2 31.3-22.9 48.4-31.9 19.2-10.1 39.5-18 60.5-23.6 4.5-1.1 2.6-8.1-1.9-6.9z"/><path d="M370.8 654.9c28-4.3 54.2-17.8 74-38.1 3.2-3.3-1.8-8.4-5.1-5.1-19 19.5-43.9 32.2-70.9 36.3-4.5.7-2.6 7.6 2 6.9z"/><path d="M355.7 657.2c23.5 4 45.2 15.1 61.9 32.1 3.2 3.3 8.3-1.8 5.1-5.1-17.6-17.8-40.5-29.8-65.1-33.9-4.5-.8-6.5 6.1-1.9 6.9z"/><path d="M394.2 713.2c8-9.6 15.9-19.1 23.9-28.7 2.9-3.5-2.1-8.6-5.1-5.1-8 9.6-15.9 19.1-23.9 28.7-2.9 3.5 2.1 8.6 5.1 5.1zm-1.7 33.9c1.6 5.9 6.1 10.2 12.3 11 6.9.9 13.6-2.7 19.3-6.2 3.9-2.4.3-8.6-3.6-6.2-5.9 3.7-18.2 10-21-.5-1.3-4.5-8.2-2.6-7 1.9z"/><path d="M411.9 723.8c-14.1-2-23 11.1-21.4 24.1.6 4.5 7.7 4.6 7.2 0-.9-7.5 2.7-18.6 12.3-17.2 4.5.6 6.4-6.3 1.9-6.9z"/><path d="M386.4 718.7c9.4 2.6 17.7 7.6 24.3 14.7 3.1 3.4 8.2-1.7 5.1-5.1-7.5-8-16.9-13.7-27.5-16.6-4.5-1.2-6.4 5.8-1.9 7zm-76.5-340c-12.3-1.6-23.9 9.6-23 21.8.3 4.6 7.5 4.6 7.2 0-.6-8.8 7.2-15.8 15.8-14.7 4.5.7 4.5-6.5 0-7.1zM672 399.2c11-1.8 17 12.7 8.1 19.3-3.7 2.7-.1 8.9 3.6 6.2 6.7-5 10-13.9 6.6-21.8-3.4-8-12-11.9-20.2-10.5-4.6.6-2.6 7.5 1.9 6.8zm-125.1-88.9c4-2.9 9-3.9 13.6-1.9 4.2 1.9 7.8-4.3 3.6-6.2-6.8-3.1-14.7-2.7-20.8 1.9-3.7 2.7-.1 8.9 3.6 6.2zm-142.7 15.1c3.9-4.2 9-6 14.6-5.4 4.6.5 4.5-6.7 0-7.2-7.4-.8-14.7 2-19.7 7.5-3 3.5 2 8.6 5.1 5.1zm48.3 642.8c2.2 4.9 4.5 9.8 6.7 14.8 1.9 4.2 8.1.5 6.2-3.6-2.2-4.9-4.5-9.8-6.7-14.8-1.9-4.3-8.1-.6-6.2 3.6z"/><path class="st1" d="M435.3 368.3c-3-.4-5.8 2.9-5 5.8s5.1 4.1 7.3 2 1.5-6.3-1.3-7.5m109.9-1.6c-3-.4-5.8 2.9-5 5.8s5.1 4.1 7.3 2 1.5-6.3-1.3-7.5"/><path d="M463.6 983.1c6-2.3 12.2-4.8 16.4-9.9 3.7-4.5 5.5-10.9 3.1-16.5-4.5-10.7-18.4-10.4-27.6-6.9-5.2 2-3 10.5 2.3 8.5 4.5-1.7 13.7-4.2 16.9 1.1 4.7 7.8-8.3 13.3-13.4 15.3-5.2 2-2.9 10.4 2.3 8.4zm-65.1-4c11.2 3.2 22.6 5.1 34.2 5.9 5.6.4 5.6-8.4 0-8.8-10.8-.8-21.4-2.7-31.9-5.6-5.4-1.5-7.8 7-2.3 8.5zm177.3 7.5c15.9-1.4 31.9-2.8 47.8-4.2 5.6-.5 5.6-9.3 0-8.8-15.9 1.4-31.9 2.8-47.8 4.2-5.6.5-5.7 9.3 0 8.8z"/><path d="M598.9 1002.5c6.2-.3 12.5-.3 18.6-.9 4.9-.5 10-1.5 13.8-4.8 5.9-5.2 6.8-16.5-1.2-20.3-5.1-2.4-9.5 5.1-4.4 7.6 1.8.8 1.9 2.7 1.1 4.5-1.1 2.5-3.9 3.3-6.3 3.9-6.9 1.5-14.7 1-21.7 1.3-5.5.2-5.5 9 .1 8.7zm-35.2-9.4c-.3-1.6 0-3.2 1.1-4.8 1.3-2 .4-4.8-1.6-6-2.1-1.2-4.7-.4-6 1.6-2.2 3.5-2.8 7.6-2 11.6.5 2.3 3.2 3.7 5.4 3.1 2.4-.8 3.6-3.2 3.1-5.5z"/><path d="M606.5 995.9v-3.3c0-2.3-2-4.5-4.4-4.4-2.4.1-4.4 1.9-4.4 4.4v3.3c0 2.3 2 4.5 4.4 4.4 2.4-.1 4.4-1.9 4.4-4.4zm-176.6-2.2c.5-1.6 1.1-3.3 1.6-4.9.7-2.2-.8-4.9-3.1-5.4-2.4-.5-4.6.7-5.4 3.1-.5 1.6-1.1 3.3-1.6 4.9-.7 2.2.8 4.9 3.1 5.4 2.4.5 4.6-.8 5.4-3.1zm30.2.6v-8.2c0-5.6-8.8-5.7-8.8 0v8.2c0 5.6 8.8 5.6 8.8 0zm18.6-.6c5.6 0 5.6-8.8 0-8.8-5.6.1-5.6 8.8 0 8.8z"/><ellipse transform="rotate(-53 445.757 480.073)" cx="445.8" cy="480.1" rx="4.3" ry="6"/><path d="M514.2 499.8c.2 1.2-.7 2.6-2.5 3.6-1.9 1-4.7 1.6-7.8 1.2-3.1-.4-5.7-1.6-7.3-3.1-1.6-1.4-2.1-3-1.6-4.1.5-1.1 2-1.7 3.7-1.9 1.8-.2 3.9-.2 6.2.1 2.3.3 4.4.7 6.1 1.4 1.7.7 3 1.6 3.2 2.8z"/></svg>
+ data/BubbleTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M496.4 441.7c-10.4 1.2-20.7 3.6-30.1 8.2-22.4 10.9-38.2 34.2-40 59.1-1.8 24.9 10.6 50.2 31.2 64.2 27.2 18.4 55.5 25.1 86.6 14.5 12.2-4.2 32.5-18.8 42.1-27.4 21-18.7 27.2-51.2 17-77.4-10.3-26.2-35.3-45.2-62.9-50.9-27.5-5.7-56.9 1.3-80.6 16.3" opacity=".7" fill="#85ecff"/><path d="M487.6 466.4c-8.9 4.5-17.4 10.2-23.5 18.1-6.1 7.9-9.5 18.3-7.5 28 2.9 14.1 17.3 24.4 31.7 24.1s27.8-10.1 33.9-23.1c5-10.6 5.5-23.8-.8-33.6-6.3-9.9-20.2-14.9-30.6-9.5m58 4.1c2.2 8.8 8.7 19.4 17.3 16.8 5.9-1.8 8.3-9.5 6-15.2-2.3-5.7-8-9.3-13.8-11.3-1.5-.5-3.2-.9-4.4.1-1.2 1-.5 3.6 1 3.1" opacity=".7" fill="#f7feff"/><path d="M532 585.1c15.8-2.5 34-7.4 40.2-22.1 1.1-2.5 1.5-5.9-.6-7.6-2.3-2-5.8-.5-8.5.8-16.1 7.5-68.1.1-77.6 13.6-14.5 20.6 38.2 16.6 46.5 15.3z" opacity=".53" fill="#009dd1"/><path d="M507.9 425.4c-42.2-3.4-84.1 25-97.2 65.1-12.9 39.5 5.5 85.6 40 107.8 40.8 26.2 99.6 14.7 137.4-11.9 18.3-12.9 32.2-30.9 36.9-53 4.4-20.7 1.6-42.5-7.5-61.6-21.6-45.7-78-64.1-124.8-51.2-7.4 2-4.3 13.6 3.2 11.6 36.8-10.1 81.6.8 104.1 33.3 21.7 31.3 20.3 75.8-8 102.5-15.5 14.7-36.3 23.8-56.8 29-21.5 5.4-44.9 6-65.8-2.4-33.8-13.5-55.2-52.1-50.2-88 5.8-41.8 47.4-72.5 88.7-69.2 7.7.6 7.6-11.4 0-12z"/></svg>
+ data/BugTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0,.st4{opacity:.7;fill:#6f5ea8}.st4{fill:#99471c}.st6{fill:#4f240f}.st7{fill:#99471c}.st11{fill:#fff}</style><path class="st0" d="M650.1 384.1c2.7-4.5 7.1-14.6 11.9-8 9.2 36.4 12 65.5 11.8 103.2-.1 22.7-6.7 50.6-15.7 71s-26.3 37.5-46.9 40c10.8-1.3-4.9-34.5-18.1-44.4-15.8-11.9-28.3 1.1-9.2-48.9 16.3-42.7 43-74 66.2-112.9z"/><path d="M424.9 684.1c-6.5-5.7-3.9-17 2.5-22.8 6.4-5.8 15.1-8 23.1-11.4 8-3.4 14.9-8.5 16.7-16.9-21.9 7.7-40.7 6.8-63.2 2.9-12-2.1-31.9-9.5-43.3-2-13.6 8.9-10.3 29.2-1.4 40.2 15.9 19.6 44.1 14.5 65.6 10zm245.5-22.7c-28.3 32-83.6-23.2-62-51.8 27.8-37 94.5 14.9 62 51.8z" fill="#d1fbff" opacity=".7"/><path d="M614.4 641.3c-6-.7-12.2-1.5-17.7-4.3-5.4-2.8-10-8-10.3-14.1-.3-7.5 5.7-13.8 12.1-17.7 6.4-3.9 13.7-6.7 18.8-12.2" fill="#d1fbff"/><path d="M593.9 660.5c3.1 5.3 6.2 10.6 9.5 15.8 1.6 2.4 3.1 4.8 4.8 7.2.8 1.2 1.6 2.3 2.5 3.4.2.2 2 2.7 1.2 1.7.4.5.7 1 1.1 1.5 3.8-5.6 5.8-12.7 5.4-19.5-.9-15-21.6-47.8-40.7-39.3 5.4 9.7 10.6 19.5 16.2 29.2z" fill="#997256"/><path class="st4" d="M602.4 716.5c.3-3.9 2.8-7.5 6.2-9.3 7.9 14.6 15.8 29.3 23.6 43.9-1.2-20.4-11.1-40.2-26.8-53.4-3.2 16.5 5.1 34.5 19.7 42.8"/><path class="st4" d="M627.3 750.5c-9.6 8.1-15.3 20.6-15.2 33.2 10.7-12 18.1-27 21.1-42.8"/><g opacity=".7"><path class="st6" d="M484.1 632.7c-19.4 15.6-36.4 34.2-50 55-3.9-4.7-7.9-9.5-11.8-14.2 20-14.2 40-28.4 59.9-42.6m98.3-1.1c14.8 9.5 26.9 23 34.8 38.7 5.8-.8 8.6-8.4 6.6-13.9s-7-9.3-11.7-12.8c-12.7-9.3-28.5-14.5-41.2-23.8"/><path class="st6" d="M434.4 687.9c-20 8.3-32.3 31.9-27.8 53.1 9.8-20 21.3-39.1 34.4-57m-14.1 93.1c-9-5.5-20.9-5.7-30.1-.6 9.6 7.5 22.6 10.2 34.4 7.1m15.3-84.7c-5.6 10.8-11.1 21.6-16.7 32.3 1.8 2.1 3.6 4.2 5.5 6.3 7.1-5.4 14.5-11.2 17.8-19.5 3.3-8.3.5-19.7-8-22.5m50.8 34.9c-6.1 8-9.1 18.2-8.3 28.3 7.9-6.8 14.5-15 19.5-24.2-3.5-3.1-7.1-6.2-10.6-9.3m-26.2 55.6c-7.8-2.8-17.1-.6-23 5.2 8.5 3.2 17.9 4.1 26.9 2.7m35.8 5.1c-9.1-3.8-20.1-2.4-28 3.4 9.4 4.9 21.5 3.7 29.8-3m58.9-60.7l20.7 28.5c3.3-14.5-3.6-30.7-16.3-38.4m6.5 66.1c-1.8-4.8 5.6-9.3 9.6-6.2s2.8 10.4-1.6 13-10.4 1.2-14.2-2.3m36-87.5c-2.5.4-5 .8-7.4 1.2 5.6 17.3 16.5 32.8 30.9 43.9m-21.4 34.7c1.2-7.8 8.3-14.2 16.2-14.6s15.5 5.5 17.3 13.2c-12.2.8-24.4 1.7-36.7 2.5m38.6-66.9c4.7 16.5 2 34.9-7.2 49.3 10.1-1.8 20.3-3.6 30.4-5.4-7.7-3.2-15.8-5.3-24-6.5 8.9-14.7 10.4-33.6 4.1-49.6-5.7-14.3-18.4-27.8-33.5-31.6 7.4 16.4 24.8 24.9 30.2 43.8z"/></g><path class="st7" d="M560.3 404c7.6 7 15.3 14 22.9 20.9 6.6-6.3 6.2-18.4-.9-24.2s-19.1-3.8-23.9 3.9"/><path d="M598.2 660.5c-7.6-14.4-12.4-30.9-26.4-39-1.5-.9-3.1-1.6-4.7-2.3-2.8.9-5.8 1.1-8.8.5-12.2-2.6-26.8-.8-40.1.9-13.5 1.7-26.5 2.7-39.9 1.1-2.7 4.6-4.5 9.8-5.1 15.2-11.8 1.1-25.6 14.6-34.6 20.3-6.4 4-13.5 9.1-14.3 16.6-1 8.5 6.4 15.3 13 20.6 4.5 3.7 9.9 7.5 15.6 6.6.9-.2 1.7-.4 2.5-.7.2.4.5.9.7 1.3 3.9 6.2 11 9.4 17.9 12.1 16.3 6.4 33 11.6 50 15.8 15.8 3.8 32.4 6.7 48.3 3.2 15.9-3.5 31.1-14.7 35-30.5 3.4-14.3-2.3-28.9-9.1-41.7z" opacity=".7" fill="#997256"/><path class="st7" d="M432.1 419.4c5.1-11.5 20.6-16.9 31.7-10.9-6.2-12.8-21-20.8-35.1-18.9.8 9.4 4.2 18.6 9.8 26.2"/><path d="M470.2 559.5c-10 3.5-18 12.1-20.6 22.3-2.6 10.2.2 21.5 7.3 29.3 14.2 15.5 38.9 13.9 59.9 10.9 15-2.1 20.8 2.6 35.8.5 16.8-2.4 45.8-13.7 51.9-29.3 3.8-9.7.6-21.2-6.4-29S580.9 552 570.6 550c1.6.3-13.4-28.2-17.5-31.2-10.8-7.9-26-10.5-39.1-7.5-21.8 4.7-39.1 27.2-43.8 48.2z" opacity=".7" fill="#d9a179"/><path d="M473 575.2c-1.5-2.8-6.4-1.8-7.5 1.2-1.1 3 .8 6.4 3.6 8 2.7 1.6 6 1.9 9.2 2.2 2 .2 4.1.3 5.9-.5 1.9-.8 3.4-2.8 2.9-4.7-1.2-5-11.7-2.1-12.6-7.2m95.1 3.1c2.2-4 4.7-8.4 8.9-10.2 4.2-1.9 10.4.5 10.5 5.1 0 2.4-1.6 4.5-3.5 6-4.9 3.7-12.3 3.8-17.2.1" opacity=".7" fill="#ffd2cc"/><path class="st0" d="M442.5 591.9c-2.8-11.7 2.4-24.8 12.5-31.9 4.1-2.9 9.2-5.2 11.3-9.6 3-6.5-1.4-14-6.5-19.1-39.8-39.7-132.6-116.5-141.3-122.6-5 31.2 19.7 115.4 21.5 121 11.3 34.8 32 68 64 88 9.9 6.2 21.2 11.2 33 11.7 11.9.5 24.5-4.1 31-13.6-12.3-2.4-22.8-12.1-25.5-23.9z"/><path d="M492.5 553.1c-4.4 2.1-4.5 9-3.2 13 1.5 4.7 6.9 5.9 10.4 2.5 4.2-4 2.5-10.3-.4-14.5-1.5-2.2-4.9-2.4-7.4-2.7-3.3-.4-6.2-.1-9.2 1.2-2.6 1.1-.4 5 2.2 3.8 3-1.3 6.5-.9 9.5 0 2.3.7 3.4 3.9 3.4 6.2 0 2.9-3.4 5.3-4.6 1.6-.6-2-.7-6.2 1.4-7.2 2.6-1.3.4-5.1-2.1-3.9zm71.8-.6c-1.2-1.9-3.4-2.6-5.5-1.6-2.2 1-3.1 3.5-3.7 5.7-1.2 4.5-.8 10.8 4.7 12.1 4.5 1 9-2.8 9.8-7.1 1-5.2-2.4-10-7.1-11.8-2.7-1-3.8 3.3-1.2 4.3 4 1.5 6 8 1.3 10-2.4 1-3.7-.8-3.7-3 0-1.1.2-2.2.5-3.2.1-.4 1.2-2.9 1.2-3 1.5 2.1 5.3-.1 3.7-2.4z"/><path d="M559.8 555.2c3.3 1.5 6.9 2.2 10.5 1.9 2.8-.2 2.8-4.6 0-4.4-2.9.2-5.7-.1-8.3-1.3-2.6-1.2-4.8 2.6-2.2 3.8zm-65.7-15.5c.1-.5.4-.8.8-1 .7-.3 1-.2 1.5 0 2.4 1.5 4.6-2.3 2.2-3.8-3.2-2-7.8-.1-8.7 3.6-.7 2.8 3.5 4 4.2 1.2zm59.1.6c.8-.6 2-.9 3-.2.9.7 2.2.9 3.1 0 .8-.8.9-2.4 0-3.1-2.4-1.9-5.7-2.3-8.3-.5-1 .7-1.4 1.9-.8 3 .5.9 2 1.5 3 .8zm-72 246.1l-8.1-12.9c-1.5-2.4-5.3-.2-3.8 2.2l8.1 12.9c1.5 2.4 5.3.2 3.8-2.2zm-81.9-55.7c3.1 3.1 5.6 6.7 7.5 10.7 1.2 2.6 5 .3 3.8-2.2-2-4.3-4.8-8.2-8.1-11.6-2.1-2.1-5.2 1-3.2 3.1zm96.7 3.5c4-2.4 8 3.3 4.2 6-2.3 1.6-.1 5.5 2.2 3.8 3.5-2.5 4.9-7.4 2.5-11.2-2.3-3.7-7.5-4.7-11.2-2.5-2.3 1.5-.1 5.4 2.3 3.9zm-11.5 24.1c10.7 9.6 19.4 21 25.8 33.9 1.3 2.5 5.1.3 3.8-2.2-6.5-13.2-15.5-25-26.5-34.8-2.1-1.9-5.3 1.2-3.1 3.1z"/><path d="M510.4 789.4c-8.3-3.8-18-2.3-24.5 4.2-1.5 1.4-.3 3.6 1.6 3.8 1.9.2 3.1-.6 4.1-2.2 1.6-2.4-2.2-4.6-3.8-2.2h-.3c.5 1.3 1 2.5 1.6 3.8 5-5 12.7-6.5 19.2-3.5 2.4 1.1 4.7-2.7 2.1-3.9zm65.9-57.9c1.8-1.5 7.7-5.6 8.8-1.1.7 2.8 4.9 1.6 4.3-1.2-.8-3.1-3.6-5.1-6.7-5.2-3.7-.2-6.7 2.2-9.5 4.3-2.2 1.9 1 5 3.1 3.2zm51.9 17c2.5-1.7 4.9-3.3 7.4-5 2.3-1.6.1-5.4-2.2-3.8-2.5 1.7-4.9 3.3-7.4 5-2.4 1.5-.2 5.3 2.2 3.8zm-130-232.2c3.1-21.7 1.5-43.8-4.9-64.8-3.1-10.2-7.4-20.2-12.6-29.5-5.2-9.3-11.3-18.5-19.5-25.4-8.5-7.1-19.3-11.9-30.3-8.3-3.8 1.2-2.1 7.2 1.6 6 12.4-4.1 23.9 5 31.5 13.9 8 9.4 14.1 20.9 18.8 32.2 9.6 23.4 13 49.2 9.4 74.2-.5 3.9 5.5 5.6 6 1.7z"/><path d="M429 391.4c1.3 10.6 2.6 21.2 3.9 31.9.4 3.5 4.8 4.2 6.1.8 3.5-9.1 13.9-14.6 23.4-12.5 3.9.8 5.5-5.1 1.6-6-13-2.8-26.2 4.5-31 16.8 2 .3 4 .5 6.1.8-1.3-10.6-2.6-21.2-3.9-31.9-.5-3.8-6.7-3.8-6.2.1zm118.4 110.2c.9-14 1.8-28.1 2.6-42.1.8-13.1.9-26.6 4.7-39.2 2.8-9.2 10.7-24 22.7-21.7 5.4 1 8.8 6.1 9.4 11.3.7 6.2-2.4 12.2-6.3 16.8l4.8.6c-5-9.8-12.9-17.8-22.6-23-3.5-1.9-6.6 3.5-3.1 5.3 8.8 4.8 15.8 11.9 20.4 20.8.9 1.7 3.6 2.1 4.8.6 6.6-7.9 10.7-18.4 6.2-28.3-4.1-9.1-14.2-12.7-23.3-8.8-22.2 9.6-22.4 40.2-23.7 60.5-1 15.7-2 31.5-2.9 47.2-.2 4 6 4 6.3 0z"/><path d="M468.2 559.6c9.5-23.6 25.8-47.3 52.8-51.8 11.7-1.9 23.4 1.2 32.5 8.9 8.4 7.1 14.2 17.9 12.6 29.1-.6 3.9 5.4 5.6 6 1.6 3-20.3-12-38.5-30.9-44.5-21.1-6.6-43.6 4.2-58 19.6-9.5 10.2-15.7 22.6-20.9 35.4-1.5 3.7 4.5 5.3 5.9 1.7z"/><path d="M571 546.3c9.9 3.4 19.7 8.2 26.7 16.3 6.6 7.7 10.1 18.5 6.6 28.3-7.6 21-33.2 24.1-52.4 24.4-4 .1-4 6.2 0 6.2 22.3-.3 51-5.2 58.7-29.9 3.4-10.9-.1-22.7-7-31.5-7.7-9.9-19.2-15.7-30.9-19.7-3.8-1.3-5.4 4.6-1.7 5.9zm-57.6 52.5c7.5 10.8 23 12.2 31.5 1.8 2.5-3-1.8-7.4-4.4-4.4-5.9 7-16.5 7.2-21.8-.6-2.2-3.2-7.5-.1-5.3 3.2zm-78.7 38.8c-33-9.8-59.7-33.6-78.3-62-21.2-32.5-31.3-70.4-36.7-108.4-3.4-23.5-5-47.2-6.6-70.9-1.5.9-3.1 1.8-4.6 2.7 42.9 30.8 83.5 64.8 121.4 101.6 10.8 10.5 21.3 21.1 31.6 32 2.7 2.9 7.1-1.5 4.4-4.4-36.7-38.7-76.2-74.6-118.2-107.5-11.9-9.3-23.9-18.3-36.1-27.1-1.9-1.3-4.8.4-4.6 2.7 5.3 77.5 13.1 165 76 219.4 14.6 12.6 31.5 22.4 50.1 27.9 3.8 1.1 5.4-4.9 1.6-6z"/><path d="M572.9 529.9c12.1-48.5 37.4-92.1 64.9-133.3 7.8-11.8 15.9-23.4 23.9-35h-5.3c9.1 13.5 13.5 29.2 16.3 45 3 17 4.7 34.3 5 51.5.3 17.7-.9 35.5-4.1 52.9-3 16-7.4 32-15.5 46.1-8.3 14.5-21.1 26.9-37.3 32.1-3.8 1.2-2.2 7.2 1.6 6 32.1-10.2 48-42.3 55.1-72.9 8.4-36.2 7.8-73.8 2.3-110.4-2.9-18.7-7.3-37.5-18-53.4-1.3-2-4-2-5.3 0-28.5 41.1-57.2 82.7-76.2 129.3-5.4 13.2-9.8 26.7-13.3 40.5-1.1 3.8 4.9 5.5 5.9 1.6zm-178.8 89c-12.3-2.2-24.5 3.7-34.8 10-9.6 5.8-17.4 14.2-19 25.7-1.5 10.5 2 21.2 9.7 28.5 8 7.4 18.8 10.7 29.4 12.2 13.3 1.8 27.5 1.9 39.6-4.6 3.5-1.9.4-7.2-3.1-5.3-11.5 6.2-26 5.6-38.6 3.4-11-2-22.9-6.5-28.4-17-5.7-10.9-2.7-24 6.2-32.2 4.7-4.3 10.4-7.3 16.1-10 6.6-3.2 13.8-6 21.2-4.6 4 .6 5.6-5.4 1.7-6.1z"/><path d="M632 593c22.8 1.8 46.4 19.1 49.8 42.8 1.7 11.7-3.4 23.3-12.8 30.3-10.2 7.6-23.7 8.4-35.4 4.1-3.7-1.4-5.3 4.6-1.6 6 20.4 7.6 44.6-.6 53.4-21.2 8.9-20.8-3.6-43.5-20.4-56-9.6-7.1-21-11.2-32.9-12.2-4.1-.3-4.1 5.8-.1 6.2zm-157.6 36.6c-15.8 13.2-32.6 25-50.4 35.3-3.4 2-.3 7.3 3.1 5.3 18.2-10.6 35.5-22.8 51.6-36.3 3.1-2.5-1.3-6.8-4.3-4.3z"/><path d="M419.1 667.2c6.5 15.4 17.4 28.3 31.8 36.9 3.4 2 6.5-3.3 3.1-5.3-12.9-7.7-23.1-19.3-28.9-33.2-1.6-3.6-7.5-2.1-6 1.6z"/><path d="M458.2 699c-8.9-5.8 1.1-20 4.7-26.1 5.4-8.9 11.7-17.2 18.9-24.7 2.7-2.9-1.6-7.3-4.4-4.4-9 9.5-16.8 20.1-23.1 31.6-4.8 8.9-10 21.9.7 28.9 3.4 2.2 6.5-3.1 3.2-5.3z"/><path d="M446.8 696.1c5.6 11.4 15.9 19.2 26.6 25.6 12.1 7.3 25.1 13.4 38.7 17.3 24.6 7.1 51.6 6.1 73.8-7.5 11.1-6.8 20.4-16.5 25.9-28.4 1.7-3.6-3.7-6.7-5.3-3.1-9.3 20.1-29.4 32.5-50.8 36.2-25.4 4.4-51.6-4.3-73.6-16.6-11.7-6.5-23.9-14.2-30-26.7-1.7-3.5-7-.4-5.3 3.2zm132.9-59.6c.6-.6 1.2-1.2 1.9-1.8-1.2.2-2.5.3-3.8.5 7.6 5.5 12.5 13.7 16.4 22 3 6.5 11.7 20.8 3.8 26.7-3.2 2.3-.1 7.7 3.1 5.3 10.7-7.9 4.6-21.2.4-30.9-4.8-10.9-10.7-21.4-20.6-28.5-1.1-.8-2.8-.4-3.8.5-.6.6-1.2 1.2-1.9 1.8-2.8 2.8 1.6 7.2 4.5 4.4zM491 668.2c8.7 7.7 20.3 10.5 31.6 9 12.4-1.6 23.3-8 32.8-15.8 3.1-2.5-1.3-6.8-4.4-4.4-15.2 12.3-38.9 21.6-55.7 6.8-2.9-2.6-7.2 1.7-4.3 4.4z"/><path d="M479.4 684.2c10.2 12.5 26.6 17.1 42 18.7 17.1 1.7 35.6-1.8 47.3-15.2 2.6-3-1.7-7.4-4.4-4.4-10.8 12.3-27.4 14.9-43 13.4-13.9-1.4-28.5-5.7-37.7-16.8-2.4-3.2-6.7 1.2-4.2 4.3zm101.1-54.4c4.8 6.2 11.9 9.7 18.8 12.9 6.7 3.2 14.5 6.7 18.2 13.5 4.2 7.9.8 18.1-2.3 25.8-3.1 7.7-7.8 14.9-14.9 19.4-3.4 2.1-.3 7.5 3.1 5.3 7.7-4.8 13-12.1 16.6-20.3 3.8-8.5 7.2-18.9 4.8-28.3-4.9-19.3-29.2-18.9-40-32.8-2.3-3-6.7 1.4-4.3 4.5zm-130.3 63c-13.3 8.6-21.3 23.7-20.8 39.6.1 4 6.3 4 6.2 0-.4-13.7 6.3-26.8 17.8-34.3 3.3-2.1.2-7.4-3.2-5.3zm8.1 13.7c-7.2 7-13.3 15-17.9 24-1.8 3.5 3.5 6.7 5.3 3.1 4.4-8.5 10-16.1 16.9-22.8 3-2.7-1.4-7-4.3-4.3z"/><path d="M429.6 732.2c7.9 6.6 15.2 14 21.8 21.9 3.2 3.9 6.3 8 9.1 12.3 1.4 2.1 2.7 4.2 4 6.3.8 1.2 1.5 2.5 2.2 3.7.8 1.3.9 3.4 2.2 1.8 1.2-.2 2.5-.3 3.8-.5-.1-.1-.2-.1-.4-.2-3.6-1.7-6.7 3.7-3.1 5.3.1.1.2.1.4.2 1.1.5 2.8.6 3.8-.5 3.4-4.1-1.2-9.3-3.5-13-3.2-5.3-6.7-10.4-10.5-15.3-7.5-9.7-16-18.5-25.3-26.4-3.1-2.5-7.5 1.8-4.5 4.4z"/><path d="M471.6 776.2c-11-2-22.3 1.9-29.4 10.7-1.2 1.5-1.2 3.8.6 4.8 2.8 1.7 6.2.3 7-2.9 1-3.8-4.9-5.5-6-1.6.7-.3 1.4-.6 2-.8l.6 4.8c5.6-7 14.5-10.7 23.4-9.1 4 .8 5.7-5.2 1.8-5.9z"/><path d="M446 789.6c6.7 1.5 13.5 2.3 20.4 2.4 4.1 0 13.4 1.2 15.5-3.4.6-1.4.5-2.6-.5-3.8-.1-.1-.2-.3-.3-.4-2.5-3.1-6.8 1.3-4.4 4.4.1.1.2.3.3.4-.2-1.2-.3-2.5-.5-3.8-.1.3-5.1.2-5.9.3-2.6.1-5.2.1-7.8 0-5.1-.2-10.2-1-15.2-2.1-3.8-.8-5.4 5.2-1.6 6zm-12.8-105.9a78.77 78.77 0 0 0-33.8 43.3c-1.2 3.8 4.8 5.4 6 1.6 5.2-16.5 16.2-30.6 31-39.6 3.3-2 .2-7.4-3.2-5.3z"/><path d="M431.9 692.9c-11.6 15.8-21.6 32.6-29.9 50.3-1.7 3.6 3.6 6.7 5.3 3.1 8.3-17.7 18.3-34.6 29.9-50.3 2.4-3.2-3-6.2-5.3-3.1z"/><path d="M402.4 743.7c10 9.2 17.2 20.8 21.1 33.9 1.1 3.8 7.1 2.2 6-1.6-4.1-14-11.9-26.7-22.7-36.6-2.9-2.7-7.3 1.6-4.4 4.3z"/><path d="M423.3 771.9c-6.5 1.1-13-1.5-19.5-.7-4.7.6-8.8 2.5-11.5 6.5-1.7 2.5 1.1 4.9 3.5 4.5l1.8-.3c3.9-.6 2.2-6.6-1.6-6l-1.8.3c1.2 1.5 2.3 3 3.5 4.5 2.4-3.5 7.2-3.8 11.1-3.6 5.5.3 10.7 1.5 16.2.6 3.9-.5 2.2-6.5-1.7-5.8z"/><path d="M397.9 782.9c10.8 4.4 22.8 4.7 33.8.9 3.7-1.3 2.1-7.3-1.6-6-10.1 3.5-20.7 3.2-30.5-.9-3.7-1.4-5.3 4.5-1.7 6z"/><path d="M403.7 735.4c9.5 14.3 18.2 29.2 26.1 44.5 1.8 3.5 7.2.4 5.3-3.1-7.9-15.3-16.6-30.1-26.1-44.5-2.1-3.3-7.5-.2-5.3 3.1zm92.7-11.9c-6.5 9.4-11.1 19.9-13.4 31.1-.8 3.9 5.2 5.5 6 1.6 2.2-10.7 6.5-20.7 12.7-29.7 2.4-3.2-3-6.3-5.3-3z"/><path d="M503.1 735.5c-7.1 6.3-12.2 14.5-14.8 23.6-1.1 3.8 4.9 5.5 6 1.6 2.3-8.2 6.8-15.3 13.2-20.9 3-2.6-1.4-6.9-4.4-4.3z"/><path d="M481.7 760c1.3 1.9 2.5 3.8 3.8 5.7.9 1.4 2.7 2 4.2 1.1 1.4-.8 2-2.8 1.1-4.2-1.3-1.9-2.5-3.8-3.8-5.7-.9-1.4-2.7-2-4.2-1.1-1.4.7-2 2.8-1.1 4.2z"/><path d="M489.5 762.7c10.3 9.5 18.6 20.7 24.6 33.4 1.7 3.6 7 .5 5.3-3.1-6.2-13.1-14.9-24.8-25.5-34.6-2.9-2.7-7.3 1.6-4.4 4.3z"/><path d="M483.3 799.8c10.2 6.1 22.9 6.2 33.3.4 3.5-1.9.4-7.3-3.1-5.3-8.5 4.7-18.7 4.5-27-.4-3.5-2.1-6.6 3.2-3.2 5.3zm85.2-68.3c5.8 8.7 11.6 17.4 17.5 26.2 2.2 3.3 7.5.2 5.3-3.1-5.8-8.7-11.6-17.4-17.5-26.2-2.1-3.3-7.5-.2-5.3 3.1zm12.3-3.9c6.5 8.7 11.7 18.2 15.3 28.4 1.3 3.7 7.3 2.1 6-1.6-3.9-10.7-9.2-20.7-16-29.8-2.3-3.3-7.7-.2-5.3 3z"/><path d="M595.2 748.9c-10.1 10.4-17.9 22.7-23.3 36.2-1.5 3.7 4.5 5.3 6 1.6 4.9-12.5 12.3-23.8 21.7-33.4 2.7-2.9-1.6-7.3-4.4-4.4z"/><path d="M590.5 756.6c-6.2 8.8-11.8 18-16.7 27.6-1.8 3.5 3.5 6.7 5.3 3.1 5-9.5 10.5-18.7 16.7-27.6 2.3-3.2-3-6.3-5.3-3.1z"/><path d="M572.8 795.4c5.5-4.6 17.7-13.4 23-3.6 1.9 3.5 7.2.4 5.3-3.1-2.9-5.3-8.9-7.8-14.8-7.3-7 .6-12.7 5.3-17.9 9.6-3 2.6 1.4 6.9 4.4 4.4z"/><path d="M570.2 794.8c8.4 10.6 23.2.6 30.9-5.5 3.1-2.5-1.3-6.8-4.4-4.4-5.2 4-16.5 12.7-22.2 5.5-2.5-3.1-6.8 1.3-4.3 4.4zm30.5-83.6c6.4 12.6 14.3 24.3 23.3 35.2 2.5 3.1 6.9-1.3 4.4-4.4-8.7-10.4-16.2-21.8-22.4-33.9-1.7-3.6-7.1-.4-5.3 3.1z"/><path d="M607.9 701.8c8.3 12.5 15.2 25.8 20.6 39.8 1.4 3.7 7.4 2.1 6-1.6-5.6-14.5-12.6-28.3-21.2-41.3-2.3-3.3-7.6-.2-5.4 3.1zm19.1 45.8c-4.7 6.2-8.9 12.8-12.3 19.7-1.5 3.1-3 6.3-4.2 9.6-1.2 2.9-3 6-1.6 9.1.4.9 1.7 1.6 2.7 1.5 1.5-.2 2.5-.6 3.2-1.9.7-1.2.5-2.8-.5-3.8l-.2-.2c-2.8-2.8-7.2 1.5-4.4 4.4l.2.2c-.2-1.2-.3-2.5-.5-3.8-.1.1-.1.2-.2.3l2.7-1.5h-.3l2.7 1.5c-.1-.2-.2-.4-.2-.6l.3 2.4c1.2-6.1 4.6-12.3 7.5-17.7 3-5.7 6.6-11.1 10.5-16.3 2.4-2.9-3-6-5.4-2.9z"/><path d="M632.2 745.9c-7.3 15.1-15.1 30-23.3 44.6-2 3.5 3.4 6.6 5.3 3.1 8.2-14.6 16-29.5 23.3-44.6 1.8-3.5-3.5-6.7-5.3-3.1z"/><path d="M615.5 788.6c5-4.5 10.9-8.7 17.3-11 3-1.1 6.8-1.9 9.7-.2 2.3 1.3 4.1 4.2 2.8 6.8-1.8 3.5 3.5 6.7 5.3 3.1 4.2-8.2-3-16.5-11.3-17-10.4-.5-20.9 7.3-28.2 13.9-2.9 2.7 1.4 7 4.4 4.4z"/><path d="M613 794.7c10.5-4.6 21.8-6.8 33.3-6.7 4 0 4-6.2 0-6.2-12.6-.1-24.8 2.6-36.4 7.6-3.7 1.6-.5 6.9 3.1 5.3zm2-107.2c13 4.8 24.3 13.2 32.9 24.1 2.5 3.1 6.8-1.3 4.4-4.4-9.3-11.7-21.6-20.5-35.7-25.7-3.7-1.3-5.3 4.6-1.6 6z"/><path d="M618.4 675.9c16 9.8 29.2 23.4 38.6 39.7 2 3.4 7.3.3 5.3-3.1-9.9-17.2-24-31.6-40.8-41.9-3.3-2.2-6.5 3.2-3.1 5.3z"/><path d="M657 716.1c-2.3 13.1-5.5 26-9.4 38.8-1.2 3.8 4.8 5.4 6 1.6 3.9-12.7 7-25.7 9.4-38.8.7-3.9-5.3-5.6-6-1.6z"/><path d="M648.5 714.8c1.6 4.3.1 8.7-.8 13-.9 4.4-1.8 8.7-2.6 13.1-1.6 8.8-3.1 17.6-4.3 26.4-.5 3.9 5.4 5.6 6 1.6 1.3-9.8 3-19.5 4.8-29.2.9-4.6 1.9-9.2 2.8-13.8.9-4.3 1.7-8.5.1-12.8-1.3-3.7-7.3-2.1-6 1.7z"/><path d="M644.8 766.9c7.5-4.8 17-5.8 25.3-2.2 3.6 1.6 6.8-3.7 3.1-5.3-10.3-4.5-22-3.9-31.5 2.2-3.4 2.1-.3 7.4 3.1 5.3z"/><path d="M645.2 772.4c10.2.7 20.3-.7 30-3.8 3.8-1.2 2.2-7.2-1.6-6-9.2 3-18.7 4.2-28.4 3.6-4-.2-4 6 0 6.2zM471.8 562.3c-10.9-3.8-22 2.7-26.6 12.8-4.6 10-3.2 21.5 1.9 31 11.8 22 38.3 27.1 61 22.7 3.9-.8 2.2-6.7-1.6-6-18.5 3.6-40.2.4-51.7-16.1-5-7.2-7.6-16.3-5.4-25 2.4-9.3 10.9-17 20.8-13.5 3.7 1.4 5.3-4.6 1.6-5.9zm21.2-.6c0 .5.1 1.1.1 1.7h4.4c-.1-1.4-.3-2.8-.5-4.2-.1-1.2-.9-2.2-2.2-2.2-1.2 0-2.3 1-2.2 2.2.1 1.3.1 2.7.2 4 0 1.2 1 2.2 2.2 2.2 1.2 0 2.3-1 2.2-2.2-.1-1.3-.1-2.7-.2-4h-4.4c.1 1.4.3 2.8.5 4.2.1 1.2.9 2.2 2.2 2.2 1.1 0 2.3-1 2.2-2.2 0-.5-.1-1.1-.1-1.7-.1-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.2 2.2zm67.6-6.5c-1.3.2-2.4.8-2.8 2.1-.3 1.2 0 2.6 1 3.4 2.6 2 5.5-1.1 4.9-3.8-.5-2.4-4.4-1.9-4.3.6.1 2.4.1 4.8.2 7.3.1 2.1 3 3.1 4.1 1.1 1-1.7 1.9-3.4 2.9-5.1 1.4-2.5-2.4-4.7-3.8-2.2-1 1.7-1.9 3.4-2.9 5.1 1.4.4 2.7.7 4.1 1.1-.1-2.4-.1-4.8-.2-7.3-1.5.2-2.9.4-4.3.6l.9-1.2c.4.1.7.2 1.1.3.8.7.7 1.4-.1 2.2-.4.1-.7.2-1.1.3h.2c1.2-.1 2.2-.9 2.2-2.2.1-1.2-.9-2.5-2.1-2.3z"/><path class="st11" d="M494.4 557.4v1.4c0 1.2 1 2.3 2.2 2.2 1.2 0 2.2-1 2.2-2.2v-1.4c0-1.2-1-2.3-2.2-2.2-1.2.1-2.3 1-2.2 2.2zm68.8 3c2.8 0 2.8-4.4 0-4.4-2.9 0-2.9 4.4 0 4.4z"/><path class="st11" d="M565.4 558.2v-1.4c0-1.2-1-2.3-2.2-2.2-1.2 0-2.2 1-2.2 2.2v1.4c0 1.2 1 2.3 2.2 2.2 1.2-.1 2.2-1 2.2-2.2z"/></svg>
+ data/CarTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st2{opacity:.7;fill:#d4cfd4}</style><path d="M173.6 560.4c-19.7 13.8-37.3 35-32.6 58.6 2 10 6 9.7 4 20-1.7 9-6.5 21.4.8 28 1.8 1.6 4.2 2.5 6.7 2.5 18.8.3 37.5.7 56.3 1 6.8.1 14 .2 20-3.2 7.5-4.2 11.2-12.7 15.3-20.3 34.2-62.3 120.8-94.2 167.9-41 6.5 7.3 30.8 31.7 34 40.9 3.5 10.2 11.5 15 21.5 14.7 38.3-1.2 84.6-13 122.9-14.2 7.5-.2 18.3 1.7 24.6-2.4 13.2-8.6 17.3-24.9 26-38 8.9-13.4 29.3-28.4 45-32 31-7.2 52.9-9.5 83.4-.3 25.6 7.7 38.9 28.1 40.2 54.5.3 7.1 7 12 13.9 10.3 11.2-2.7 23.3-4.7 26.1-14 4.2-13.9.7-28.8-2.8-42.8-28.9 4.3-57.7-17.4-65.9-44.8-3.5-11.6 4.9-23.5 17.1-23.9 8.9-.2 22.2-5.3 31-4.1-5-23-24.8-51.6-43-69-14.6-13.9-20.4-24.5-14.6-38.6 2.5-6.1-1.5-12.9-8-14-59.4-9.7-123.1-10.8-182.8-13.4-29.1-1.3-73.3.9-101.8 7.3-74 16.5-89.1 62.6-149.3 97.1-46.1 26.6-106.3 46.4-155.9 81.1z" opacity=".7" fill="#b95dc7"/><path d="M418 634.8c-11.5-18.2-22.3-30.9-42-39.8-19.7-8.8-55.9-2.7-74 9 0 0-16.3 8.3-30.2 31.6s-15 53.9-2.5 78c4.4 8.6 10.6 16.5 18.5 22 15.1 10.4 35 11 53.1 7.6 27.7-5.2 53.8-19 73.7-39 6-6 11.5-12.8 14.3-20.8 5.4-16.3-1.7-34.1-10.9-48.6zm357.3-49.1c-19.6-13-45.8-10.8-68.6-4.5-27.8 7.8-28.2 5.2-50.5 23.2l.2-.1c-18.6 14.1-30.8 36.4-29.9 59.5 1.8 42.5 47.1 76.5 90.5 71.8 43.4-4.7 78.7-43.3 83.5-85.6 2.7-24-4.7-50.8-25.2-64.3z" opacity=".7" fill="#615f61"/><path class="st2" d="M394.7 646.9c-4.5-9.1-15.8-12.5-25.9-13.3-20-1.6-37.4-2-37.4-2-21.2 3.3-38.5 23.5-38.4 45s17.6 41.5 38.8 44.6c30.8 4.4 58.1-24.7 64-55.2 1.3-6.4 1.8-13.3-1.1-19.1zm368.4-33.1c-13.6-16.3-39.8-7.1-58.3 3.3l.2 2.9c-19.5-7.9-39 12.8-44.4 33.2-5.4 20.4 7.2 43.2 26.6 51.7s43.1 3.2 59-10.7c15.8-13.9 23.9-35.5 23.8-56.5-.1-8.5-1.5-17.4-6.9-23.9z"/><path d="M146.5 622.6c7.2-25.5 29.5-45.7 55.1-52.1 11.9-3 22.3 8.7 18.2 20.2-9.4 26.5-37.8 46.8-66.2 42.8-7.9-1.1-16.1-4.1-20.9-10.5-4.8-6.4 18.1-16.1 24.4-21" opacity=".7" fill="#ffec1f"/><path d="M833.9 522.8c-16-7.4-37.4 6.2-37.5 23.8s21.2 31.4 37.3 24.1c11.6-5.2 18-18.7 17.4-31.4-.6-12.7-7.2-24.5-15.8-33.8" opacity=".7" fill="#ff321f"/><path d="M510.1 404.5c-45.6 16-86.6 44.6-117.6 81.6 40.9-2.3 81.8-4.5 122.7-6.8-2.5-25.6-3-51.3-1.6-76.9m220.9 82.4c-8.3-37.2-42.6-64.2-79.1-75-39.9-11.8-111.6-27.5-104.9 36.4 2.3 22.2-2.8 31.2 10.1 39.3 41.1 25.6 137-1.2 173.9-.7z" fill="#a8eddc" opacity=".7"/><path class="st2" d="M814 644.6c-.9 1.9-1.6 3.8-2 5.8-1.1 5.4 4.6 10.2 11.8 10 18.1-.6 36-3.2 53.1-7.9l.3-14.8c-18.2 5.9-37.3 9.9-56.9 12-3.1.3-7.7-1.5-5.6-3.2"/><path d="M142.8 647c-10.3-12.7-11.4-30-7.2-45.3 4.6-16.8 15.6-30.3 28.8-41.3 14-11.7 30.2-20.6 45.9-29.7 16.7-9.7 33.6-19.2 51-27.5 10-4.8 20.2-9.1 30.6-12.8 5.3-1.9 10.8-3.6 16.2-5.1 2.5-.7 5.1-1.4 7.6-2 1-.2 2.2-.6 3.2-.6.5 0 1 .1 1.5.2.9.5.9.3 0-.8-1.3 4 5 5.7 6.3 1.7 1.1-3.3-1.1-6.1-4.2-7.1-4.3-1.4-8.9.3-13.1 1.4-10.8 2.8-21.3 6.4-31.6 10.6-20.6 8.3-40.2 18.8-59.5 29.8-32.9 18.7-74.4 38.4-87.7 76.8-6.5 18.8-5.4 40.4 7.5 56.2 2.7 3.4 7.3-1.2 4.7-4.5z"/><path d="M147.9 612.8c7.6-9.8 15.4-19.7 24.7-27.9 7.5-6.5 18.1-14.6 28.6-13.7 16 1.3 24 22.5 13.1 34.1-4.4 4.7-10.9 7.9-16.5 10.9-7.1 3.8-14.5 6.9-22.1 9.5-4 1.3-2.3 7.6 1.7 6.3 7.6-2.5 14.9-5.6 22-9.2 6.2-3.2 12.9-6.7 18.1-11.4 7.2-6.5 10-16.4 7.8-25.7-2.1-8.7-8.4-16.2-16.8-19.4-11.1-4.3-22.5.9-31.7 7.2-13.4 9.2-23.7 22-33.6 34.8-2.4 3.1 2.2 7.8 4.7 4.5zm177-123.4c10-17.8 21.5-34.9 35.6-49.8 13.1-13.9 28.3-25.5 44.9-34.9 10.5-5.9 21.4-10.9 32.6-15.3 3.9-1.5 2.2-7.9-1.7-6.3-19.5 7.7-38.4 17.1-55.3 29.6-15.9 11.8-29.6 26-41.5 41.9-7.5 10-14.1 20.6-20.2 31.5-2.1 3.7 3.6 7 5.6 3.3zm133-107.4c86-17.9 175.3-20.3 262.2-6.9 24.5 3.8 48.7 8.8 72.7 15-.8-1-1.6-2.1-2.4-3.1-.5 10.8-7.6 20.8-17.8 24.7-2.1.8-3.4 3.7-1.4 5.5 44.6 40.2 72.7 97.5 78 157.2 1.5 16.9 1.2 34-1 50.8-.5 4.2 6 4.1 6.5 0 7.8-60.9-8.9-124.3-44.6-174.1-10-14-21.5-27-34.4-38.5-.5 1.8-1 3.6-1.4 5.5 13-5 21.9-17.1 22.6-31 .1-1.4-1.1-2.8-2.4-3.1-86-22.2-175.9-28.9-264.2-19.6-24.9 2.6-49.7 6.5-74.2 11.6-4 .5-2.3 6.8 1.8 6zm-325 276.8c-6.5-4.5-15.6 1.1-16.2 8.5-.8 10.3 9.5 15.8 18.3 16.7 5.9.6 11.9 0 17.8-.2 6.2-.2 12.5-.4 18.7-.6 12.7-.4 25.4-.8 38.2-1.2 4.2-.1 4.2-6.7 0-6.5-18.5.6-37 1.2-55.5 1.7-4.5.1-8.9.3-13.4.4-4.1.1-8.6 0-12.4-2-2.7-1.5-5.9-4.8-5.1-8.3.7-2.7 3.9-4.5 6.3-2.9 3.5 2.4 6.8-3.2 3.3-5.6zM343 617.6c-27.2.9-53.8 18-60.9 45.2-6.7 25.3 4.7 52.1 29.1 62.5 21.3 9 47.8 5.6 66.5-7.9 22.1-16 35.8-44.8 25.5-71.5-5.2-13.5-15.9-24.6-30.1-28.3-13.6-3.6-28.7-.5-39 9.3-3 2.9 1.6 7.5 4.6 4.6 8-7.7 19.8-10.4 30.6-8.1 11.4 2.4 20.4 10 25.7 20.2 11.8 22.7 2 49-16.4 64.8-15.6 13.5-38 18.7-57.9 13.3-9.5-2.5-18.1-7.6-24.4-15.3-7.5-9.3-10.5-21.6-9.4-33.4 2.5-28.6 28.7-48 56.1-48.9 4.1-.1 4.2-6.7 0-6.5z"/><path d="M249.3 669.1c.1-23.8 15.8-44 34.9-56.8 10.1-6.8 21.2-12.1 32.5-16.7 9.7-3.9 19.8-7.4 30.3-8.4 10.9-1 21.9.9 29.3 9.6 2.8 3.2 7.4-1.5 4.6-4.6-15-17.5-41.6-12.2-60.5-5-24.3 9.2-48.9 21.5-64.4 43.2-8.1 11.3-13.2 24.8-13.2 38.8 0 4.1 6.5 4.1 6.5-.1zm197.5 4.2c52.7-10 106.5-13.2 160.1-9.8 4.2.3 4.2-6.3 0-6.5-54.1-3.5-108.5-.1-161.8 10-4.2.7-2.5 7 1.7 6.3zM726 610.4c-23.3-3.4-47.6 7.5-59.5 28-11.3 19.5-8.7 45.5 5.5 62.7 16.4 19.9 45 16.5 65.2 4.6 20.7-12.3 35.6-34.1 38.3-58.2 1.6-14.4-1.1-29.7-13.4-38.6-10.4-7.5-24.2-9-36.7-9.7-4.2-.2-4.2 6.3 0 6.5 9.8.5 20.2 1.5 29 6.1 11 5.7 14.9 16.3 14.9 28.2 0 21.5-11.3 42.1-28.3 55.1-15.9 12.2-42.4 20.8-59.5 6.3-14.4-12.2-19.3-34.7-13-52.3 8-22.2 32.6-36 55.7-32.6 4.1.8 5.9-5.5 1.8-6.1zM374.9 487.1c20.2-18.8 42-35.9 65.2-50.9 11.4-7.4 23.1-14.6 35.4-20.4 12.7-5.9 26.7-9.8 40.7-7-.8-1-1.6-2.1-2.4-3.1-.9 28.6-1.9 57.2-2.8 85.9-.1 4.2 6.4 4.2 6.5 0 .9-28.6 1.9-57.2 2.8-85.9 0-1.4-1-2.9-2.4-3.1-22.4-4.5-43.7 5.6-62.6 16.6-19.4 11.3-38 24.1-55.6 38-10.2 8-20 16.5-29.5 25.4-3.1 2.7 1.6 7.4 4.7 4.5z"/><path d="M373.5 496.2c33.3-.1 66.7-.2 100-.2 4.2 0 4.2-6.5 0-6.5-33.3.1-66.7.2-100 .2-4.2 0-4.3 6.5 0 6.5zM543 404c-4.3 28.5-3.9 57.3 1.2 85.6.8 4.1 7.1 2.4 6.3-1.7-4.9-27.1-5.3-54.9-1.2-82.2.6-4.1-5.7-5.9-6.3-1.7z"/><path d="M550.5 404.5c59.4-4.3 128.2-5.7 172.3 41.4 10.2 10.9 18 24 22 38.4 1.1 4 7.4 2.3 6.3-1.7-7.4-26.8-26.7-48.3-50.1-62.6-27.2-16.8-59.2-22.8-90.8-23.9-19.9-.7-39.8.5-59.7 1.9-4.2.3-4.2 6.8 0 6.5zm-2 96.6c52.8-2.4 105.5-4.8 158.2-7.2 4.2-.2 4.2-6.7 0-6.5-52.8 2.4-105.5 4.8-158.2 7.2-4.2.2-4.2 6.8 0 6.5zm-58 49.1c-3.8 10 3.7 20 12.8 23.8 12.1 5 25.3-1.6 35.9-7.2 3.7-2 .4-7.6-3.3-5.7-8.3 4.4-18.3 9.9-28 7.5-7.2-1.7-13.9-9.1-11.1-16.7 1.5-3.9-4.8-5.6-6.3-1.7zm65.9 104.9c2.1-17.6 4.3-35.1 6.4-52.7.5-4.2-6-4.1-6.5 0-2.1 17.6-4.3 35.1-6.4 52.7-.5 4.1 6 4.1 6.5 0zm-223.5 12.8c-.8 5.1 1.7 9.7 6.2 12.2 4.3 2.4 10 2.5 13.7-1.1 7.2-7.1.5-21.4-9.6-20.3-4.1.5-4.2 7 0 6.5 4-.5 8.1 5.1 5.5 8.7-2.6 3.6-10-.1-9.4-4.3.5-4.1-5.8-5.8-6.4-1.7zm-67.9-2.4c-12.4 29.3 2.3 66.7 31.2 79.9 3.8 1.7 7.1-3.9 3.3-5.7-26.5-12.1-39.5-45.6-28.2-72.5 1.7-3.8-4.7-5.5-6.3-1.7zm393.8-70.9c-17.7 12.5-26.1 33.5-28.9 54.8-1.5 11.3-1.6 22.8-.6 34.1 1.2 12.7 4 25.8 11.4 36.2 7.2 10.1 17.9 17.4 30.3 17.9 4 .2 4-6.2 0-6.3-23.7-.9-33.7-27.2-35.6-47.7-1.8-19.5-.7-40.5 7.1-58.6 4.2-9.9 10.6-18.7 19.4-24.9 3.3-2.4.2-7.9-3.1-5.5zm53.5 73.8c-6.1.2-11.6 2.6-15.9 6.9-3 3 1.7 7.6 4.6 4.6 3.1-3.1 6.9-4.8 11.3-5 4.2-.1 4.2-6.7 0-6.5zm28.8 20.4c1.8.9 3.7 1.9 5.5 2.8 1.6.8 3.5.4 4.5-1.2.8-1.5.4-3.7-1.2-4.5-1.8-.9-3.7-1.9-5.5-2.8-1.6-.8-3.5-.4-4.5 1.2-.8 1.5-.4 3.7 1.2 4.5z"/><path d="M293.8 744.5c16.7 9.5 37.1 11.4 55.2 4.7 3.9-1.4 2.2-7.8-1.7-6.3-16.5 6.1-34.9 4.7-50.1-4-3.7-2.2-7 3.5-3.4 5.6zm549-232.2c-12.8 1-25.5 3.4-37.8 7.2-4.9 1.5-11 2.9-14.4 7-3.7 4.4-1.6 9.5.4 14.1 2.7 6.2 5.3 12.5 8 18.8 2 4.8 3.8 11.3 8.5 14.2 4.8 3 11.8 1.8 17.2 1.7l21-.3c4.2-.1 4.2-6.6 0-6.5l-16.8.3c-4.9.1-10.1.7-14.9.2-5.5-.6-6.8-7.1-8.7-11.5-2.1-5-4.2-9.9-6.4-14.9-1.1-2.5-2.2-4.9-3.2-7.4-1-2.7-.7-4.3 1.8-5.8 4-2.4 9.3-3.5 13.8-4.7 10.3-2.9 20.9-4.8 31.6-5.6 4-.6 4.1-7.1-.1-6.8zm-27.7 162c24.7-4.6 49.3-9.1 73.9-13.7 1.7-.3 2.8-2.5 2.3-4-3.5-9.8-4.6-19.9-3.3-30.2.4-2.9-3.8-4.2-5.6-2.3-12 12.3-30 17.6-46.7 13.6-4.1-1-5.8 5.3-1.7 6.3 19 4.6 39.5-1.3 53.1-15.3-1.9-.8-3.7-1.5-5.6-2.3-1.4 10.8-.2 21.7 3.6 31.9.8-1.3 1.5-2.7 2.3-4-24.7 4.6-49.3 9.1-73.9 13.7-4.3.7-2.5 7 1.6 6.3zm-140.2-76.6c16.3-12.7 37.8-18.2 58-18.7 9.8-.3 19.7.7 29 3.9 11.9 4 20 12.5 25.4 24 18.4 39.1 6.5 94.3-29.9 117.9-19.8 12.9-45.3 15.8-66.9 5.9-3.7-1.7-7 4-3.2 5.7 20.7 9.4 44.2 8.8 64.7-1.1 21.1-10.1 36.2-29.3 44-51.7 7.8-22.6 8.4-48.5.5-71.1-4-11.6-10.3-22.8-20.3-29.9-9.5-6.7-21.7-9.2-33-10-24.2-1.7-51.7 4.1-71.4 19.4-3.4 2.6-.2 8.3 3.1 5.7z"/><path d="M398.8 607.1c19.3 17.3 32.4 43.3 30.8 69.6-.8 12.7-5.6 25-14.1 34.5-8.7 9.8-20.2 16.5-32.4 21.1-14.4 5.4-29.5 8.4-44.6 11.1-4.1.7-2.4 7 1.7 6.3 27.4-4.9 58.1-11 78.2-32 19.8-20.7 21.8-50.8 11.7-76.6-5.8-14.7-14.9-28.1-26.7-38.6-3.1-2.9-7.8 1.7-4.6 4.6zM684.2 532c7 6.6 17.8 6.7 24.9.4 3.2-2.8-1.5-7.4-4.6-4.6-4.4 3.9-11.4 3.7-15.7-.4-3-2.9-7.7 1.7-4.6 4.6z"/></svg>
+ data/ChatBubbleTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M640.9 410.7c-1.7-22.7-11.1-45.9-29.6-59.2-18.5-13.3-42.8-14.9-65.6-15.5-62.8-1.9-133.8 2.9-174.6 50.6-21.4 25-30.7 58.2-34.9 90.9-2.5 19.9-3.4 40.4 2.5 59.5 11.1 36.5 46.3 62.6 83.9 69.1 37.6 6.5 76.6-4.6 109.4-24.2 17-10.2 32.9-22.8 51.7-29.2 29.2-10.1 61.1-4.1 91.3 1.9-6.7-1.3-32.9-60.1-35.1-68.5-6.9-25.4 3-48.5 1-75.4z" opacity=".7" fill="#ccf7ff"/><path d="M636.5 495.8c16-22.2 21.4-50.5 17-77.3-4.7-28.3-21.1-52.2-44.9-68-26.2-17.2-58.6-24.5-89.6-26.2-32.6-1.8-65.6 3.7-95.4 17.1-52.6 23.7-93.8 75.8-96.4 134.6-1.2 27.8 6.3 56.3 21.4 79.7 15.8 24.5 39.6 42.1 67.4 50.7 62.8 19.4 127.2-6.4 178.8-41.8 6.9-4.7 13.7-9.7 20.3-14.7 4.6-3.5.1-11.3-4.5-7.8-47.5 36-103.7 67.4-165.4 61.1-28-2.9-55.4-14.2-75.1-34.7-18.2-18.8-29.5-43.9-32.9-69.8-7.3-54.6 23-107.7 68.2-137.1 50.2-32.7 118.6-37.4 174.1-15.9 26 10.1 49.1 28.2 59.7 54.6 9.4 23.5 9.5 51-.8 74.3-2.6 5.9-5.8 11.4-9.6 16.6-3.5 4.8 4.4 9.3 7.7 4.6z"/><path d="M594.7 563.4c26.4-1.6 53-.2 79.1 4.3 5.7 1 8.1-7.7 2.4-8.7-26.9-4.6-54.2-6.2-81.5-4.6-5.8.3-5.9 9.3 0 9z"/><path d="M636.1 487.2c5.8 28.2 17.4 54.9 34.2 78.2 3.3 4.7 11.2.2 7.8-4.5-16.4-22.8-27.7-48.6-33.3-76.1-1.2-5.6-9.9-3.2-8.7 2.4z"/></svg>
+ data/ChestTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st1{opacity:.7;fill:#c3c7bb}</style><path d="M325.1 508.5c.6 3.2 1.3 6.5 3.5 8.8 2.8 3 7.3 3.4 11.3 3.6 41.1 2.1 82.3 2.7 123.5 1.7-2.9-36.3-9-72.4-18.1-107.6-.6-2.3-1.3-4.7-3-6.2-1.6-1.4-3.7-1.9-5.8-2.2-18.7-2.9-37.6 1.1-56.1 5.2-17.4 3.9-44.1-1.6-52.8 17.4-9.2 20.4-6.2 58.3-2.5 79.3zM531 522.7c34 4.5 68.2 6.8 102.5 7.2 9 .1 18.5-.1 26-4.5-8.8-31.6-4.6-66-3.7-98.5.1-2.4-8.2-3.4-9.9-5.2-1.3-1.4-3.4-1.9-5.4-2.4-22.2-5.2-77.7-26.6-91.4-3.6-5 8.5-16.5 107.2-18.1 107zm-213.1 153c.2 3.4-.9 8.3 1 11.2 3.7 5.8 17.3 3.1 24.2 3.1 80.9.5 161.7 1 242.6 1.4 23.2.1 46.6.3 69.6-3.1 4.8-.7 10-1.8 13-5.6 3.1-3.9 2.9-9.4 2.5-14.4-2.2-29.6-4.4-59.2-6.6-88.9-32.3 1.5-64.6 1.5-96.8.1-4.7-.2-9.5-.4-13.9 1.1-5 1.8-9 5.6-13.3 8.8-19.7 14.6-49.2 14-68.2-1.5-3.5-2.8-6.8-6.2-10.9-7.9-4.5-1.9-9.5-1.9-14.4-1.8-21.2.4-36.9-2.6-58.1-2.2-15.1.3-48.3 2.6-67 3.2-23.2.8-5.2 76.1-3.7 96.5z" opacity=".7" fill="#d17d24"/><path class="st1" d="M233.8 620c8.9-2.9 17.4-6.8 25.4-11.7-.1-4.6-.2-9.2-.4-13.8-6.6 3.7-30.4 20.2-36.2 13-5.3-6.7 22.9-31.1 26.4-35.4-32 2.9-57.8 61.6-15.2 47.9zm241.9-234.9c-4-1.1-8.2 1.7-10.1 5.4-1.9 3.7-1.9 8-1.9 12.1.3 40.5 5.7 81.1 15.9 120.3.5 1.7 1 3.6 2.5 4.7 1.4 1 3.2 1 4.8 1l35.2-.6c1.1 0 2.2 0 3.2-.5 2.2-1.1 2.6-4 2.8-6.5 3.8-43.1 23.3-86.2 13.2-128.3-.8-3.2-1.8-6.6-4-9-3.9-4.4-10.4-5.1-16.3-5.2-23.6-.5-47.4 3.8-69.3 12.6"/><path d="M711.1 444.7c.1.1.2.2.2.3 1 1.6.4.3-.2-.3z" fill="#c3c7bb"/><path class="st1" d="M717.8 534.5c-.2-1.3-.4-2.8-1.4-3.7-.4-.3-.9-.6-1.4-.8-.2-1.1-.5-2.2-1.2-3-1.1-1.3-2.9-1.9-4.6-2.3-3.4-.9-6.8-1.6-10.2-2.1 4.7-.3 9.4-.8 14.1-1.4.3-25.3-.6-50.5-2.6-75.7-.1-1.2.3-1.1.7-.8-10.1-15.4-56.8-48.7-52.4-10.3.7 5.9 12 78.6 10.2 86.9-8.9.4-17.8 1.2-26.6 2-68 6.1-136.3 9.5-204.6 10-34.4.3-68.9-.2-103.3-1.4-4.9-.2-13.1-1.8-20.7-2 1.8-35.8 2.2-71.6-1.7-107.2-18.6 7.1-36.2 8.7-39.2 32.6-3.5 27.2-4.5 56.5-4 83.7 1.2 61.1-4.9 123.2 10.2 181.8.7 0 1.4-.1 2.1-.1 11.3 5.5 60.5 1.9 70.7 2.3 33.7 1.3 74.2-3.3 107.6.6 71 6 145.5-1.5 217.4-4.7 0 .3-.1.5-.1.8 14.6-.2 31.6 8.7 42.3-.3 5.8-4.9 6.4-12.9 6.5-20.1 1.4-55-1.3-110.1-7.8-164.8zm-32.3 44.6v3.1-3.1zM444.1 697.5c-34.8-1.6-70-4.7-104.8-4.8-5 0-19 2.5-32.2 6.7-1.8-43.8 1.5-87.8 4.4-131.8 50.1-.9 100.2.4 150.2 3.9 14.9 23.9 49.7 32.7 74.1 18.7 9.8-5.6 15.6-10.8 26.4-14.2 9.6-3 22.4-4.9 32.3-3.4 29.2 4.2 58.7 6.3 88.2 6.4.4 18.9.7 37.8 1.1 56.6-1 18.9-2.3 37.7-4.1 56.6-77 12.4-156.8 8.9-235.6 5.3zm289.7-147.3c-1.3 3.7-2.6 7.5-3.9 11.2 5.9-.4 11.1 3.6 15.7 7.3 6.1 5 12.3 10 18.4 15 1.4-3.6-.8-7.5-3-10.7-6.1-9-12.7-18.4-22.5-23-4.8-2.3-10.7-3.6-13.3-8.3"/><path d="M259.9 444.5c-.5 28.8-.1 57.6 1 86.4.1 3.6 5.8 3.8 5.6.2-1.2-28.8-1.5-57.6-1-86.4 0-3.6-5.6-3.8-5.6-.2zm22.7 86.5c49.7.9 99.3 1.2 149 .9 49.4-.3 98.8-1.4 148.2-2.5 27.8-.7 55.7-1.3 83.5-2 3.6-.1 3.8-5.7.2-5.6-49.6 1.2-99.2 2.4-148.8 3.4-49.4 1-98.7 1.4-148.1 1.2-27.9-.1-55.9-.4-83.8-1-3.7 0-3.9 5.6-.2 5.6z"/><path d="M654.3 420.8c2.1 34.6 4.3 69.1 6.9 103.6.3 3.6 5.9 3.8 5.6.2-2.5-34.5-4.8-69.1-6.9-103.6-.1-3.6-5.8-3.8-5.6-.2zm-391.6 23.6c-.5-.5-.8-1-.8-1.7l-1.5 2.4c19.4-8.9 39.5-16 60.2-21.4-1.2-.9-2.3-1.9-3.5-2.8-.5 5.7-1.3 11.4-2.4 17-.7 3.5 4.7 5.2 5.4 1.7 1.2-6.1 2.1-12.3 2.7-18.5.2-1.8-1.8-3.2-3.5-2.8-21.1 5.5-41.7 12.8-61.5 21.9-.8.4-1.5 1.5-1.5 2.4.1 2.2.8 4.1 2.4 5.7 2.4 2.5 6.5-1.3 4-3.9z"/><path d="M326.6 421.2c32-10.9 65.7-16.9 99.4-19.4 8.8-.7 17.6-1.1 26.5-1.2 3.6 0 3.8-5.7.2-5.6-33.3.5-66.8 4.5-99.1 12.5-9.5 2.4-19 5.1-28.3 8.2-3.4 1.2-2.1 6.7 1.3 5.5z"/><path d="M477.9 514c-3.5-22.7-6.9-45.3-10.4-68-1.7-11.2-3.4-22.5-5.1-33.8-.9-5.6-1.8-11.2-2.5-16.8-.3-2-.5-4.3.3-6.2.9-2 3-3 5-3.5 4.7-1.4 9.8-2.1 14.7-2.8 5.5-.8 11.1-1.3 16.6-1.5 10.9-.5 21.8-.1 32.7 1.3 2.5.3 5 .5 7.4 1.2 2.4.6 2.6 2.5 2.8 4.7.5 5.6.6 11.3.5 16.9-.2 11.2-1.2 22.3-2.7 33.4-3.3 25.2-7.5 50.4-11.4 75.5-.5 3.6 5.1 3.7 5.6.2 3.7-24.1 7.7-48.2 10.9-72.3 1.6-11.8 2.8-23.7 3.1-35.6.1-6 0-11.9-.5-17.8-.4-4.7-1.7-8.9-6.7-10.2-5.2-1.4-11.1-1.7-16.5-2.2-5.8-.5-11.6-.7-17.5-.7-11.6.1-23.2 1.2-34.6 3.3-4.4.8-9.5 1.7-12.7 5.1-3.5 3.7-3.2 8.8-2.5 13.5 1.8 12.2 3.7 24.3 5.5 36.4 4.1 27.1 8.3 54.3 12.4 81.4.7 3.4 6.1 2.1 5.6-1.5z"/><path d="M542 397.6c41.2-1.3 82.5 4.9 121.5 18.1 9.8 3.3 19.5 7.1 28.9 11.3 4.8 2.1 9.5 4.3 14.2 6.7 4.3 2.2 7.4 4.9 8.8 9.6 1.4 4.8 1.7 9.9 2.3 14.8.6 5.5 1.1 11.1 1.5 16.6.7 11 .9 22 .6 33.1-.1 3.2-.2 6.4-.4 9.6-.1 1.3 0 2.8-.3 4.1-.3 1.3-.5 1.5-1.8 1.7-5.9 1-12.2 1.1-18.2 1.2-12.3.2-24.7-1-36.8-3.3-3.5-.7-5.2 4.7-1.7 5.4 11.4 2.2 23 3.5 34.7 3.6 5.8 0 11.7-.2 17.5-.7 4.6-.4 10.2-.4 11.5-5.8.6-2.3.5-4.9.6-7.3.2-3.1.3-6.1.3-9.2.2-6.1.2-12.2 0-18.4-.3-11.7-1.2-23.5-2.6-35.1-.6-5.1-1-10.4-3.2-15.1-2-4.5-5.7-7.4-10-9.6-9.7-5-19.8-9.4-30-13.4-20.5-8-41.8-14-63.4-18-24.4-4.5-49.2-6.4-74-5.6-3.4.2-3.6 5.8 0 5.7zm-225.9 60c-2 22.8-1.9 45.7.3 68.4.3 3.5 6 3.8 5.6.2-2.2-22.8-2.3-45.6-.3-68.4.3-3.6-5.3-3.8-5.6-.2zm19.4 15.3c35.1-.7 70.4-2 105.5-1.2 3.6.1 3.8-5.5.2-5.6-35.1-.8-70.4.5-105.5 1.2-3.6 0-3.8 5.6-.2 5.6z"/><path d="M557.7 474.4c15.7-3.9 31.5-4.8 47.6-3.3 16.4 1.5 32.8 3.2 49.2 4.9 3.6.4 3.8-5.3.2-5.6-16.7-1.7-33.3-3.5-50-5-16.2-1.5-32.4-.4-48.2 3.6-3.7.8-2.4 6.2 1.2 5.4zm-283.5 55.9c-4.3.9-8.5 1.7-12.8 2.6-1.2.2-2.1 1.5-2.1 2.6-.2 49.7 1.8 99.4 5.9 148.9 1.2 14.1 2.5 28.2 4 42.2.4 3.6 5.8 2.2 5.5-1.3-5.3-49.2-8.5-98.5-9.5-148-.3-13.9-.4-27.8-.3-41.7-.7.9-1.4 1.8-2.1 2.6 4.3-.9 8.5-1.7 12.8-2.6 3.4-.6 2.1-6-1.4-5.3z"/><path d="M272.3 730.9c60-.8 120.1-1.4 180.1-1.7s120.1-.6 180.1-.7c33.7-.1 67.5-.1 101.2-.2 3.6 0 3.6-4.2 0-4.2-60 .1-120.1.2-180.1.4s-120.1.5-180.1 1.1c-33.7.3-67.5.7-101.2 1.2-3.6 0-3.6 4.1 0 4.1zm449.9-193.6c5.4 47.3 7.3 95 5.9 142.5-.4 13.5-1.1 26.9-2 40.3-.2 3.4 4.9 3.5 5.2.2 3.4-48 3.3-96.2-.2-144.2-1-13.4-2.2-26.7-3.8-40-.4-3.3-5.4-2.1-5.1 1.2z"/><path d="M730.6 567.8c15.4 2.7 27.3 13.7 37.5 24.9 4 4.5 11.4 13.2 5.4 19-5.8 5.6-15.3 1.6-20.9-2.3-6.5-4.5-11.2-11.2-13.3-18.7-1-3.5-6.4-2.2-5.5 1.3 2.3 8.2 7.2 15.4 13.8 20.7 6.8 5.4 16.9 9.5 25.4 5.9 3.8-1.7 6.9-5 7.9-9.1 1-4.5-.5-9-2.7-12.8-2.4-3.9-5.5-7.3-8.7-10.7-3.2-3.4-6.6-6.8-10.3-9.8-7.9-6.6-16.8-12-27.1-13.8-1.5-.3-3 .3-3.5 1.8-.3 1.4.5 3.3 2 3.6z"/><path d="M729.3 548.2c13 2.6 22.5 14.1 30.9 23.5 4.5 5 8.7 10.3 11.4 16.5 3.1 7 3.7 14.8 4.2 22.3.2 3.6 5.8 3.8 5.6.2-.5-8.2-1.2-16.4-4.4-24.1-2.8-6.8-7.4-12.7-12.2-18.1-9.1-10.3-19.7-22.8-33.8-25.6-3.5-.7-5.2 4.6-1.7 5.3zm-473.5 8c-18.9 10.1-39.1 21.5-48.7 41.7-2.2 4.7-3.7 9.5-4.4 14.6-.6 4.7-1 10.7 2.7 14.3 3.3 3.2 8.2 3.6 12.5 3.1 5.1-.6 10.1-2 14.9-3.7 11.2-4 21.4-10.3 30-18.5 2.6-2.5-1.2-6.6-3.8-4.1-6.6 6.4-14.3 11.6-22.8 15.3-4.2 1.9-8.6 3.3-13.1 4.4-3.7.9-8.3 2.1-11.9.7-4.2-1.7-3.2-7.6-2.7-11.2.6-4.4 2-8.8 4-12.8 4.1-8.4 10.4-15.4 17.7-21.2 8.7-7 18.6-12.3 28.4-17.5 3.1-1.9.4-6.9-2.8-5.1z"/><path d="M257.2 568.2c-8.1 5-15.6 11.1-22 18.2-5.7 6.4-14.2 15.5-11.3 24.9 1.1 3.4 6.5 2.1 5.5-1.3-1.3-4.3 1.1-8.3 3.6-11.7 2.4-3.3 5-6.5 7.8-9.5 5.7-6 12.1-11.3 19.2-15.6 3-1.9.3-6.9-2.8-5zm-9.7 36.8c3-2 5.9-4.1 8.9-6.1 1.2-.9 1.9-2.4 1.1-3.8-.7-1.2-2.6-2-3.8-1.1-3 2-5.9 4.1-8.9 6.1-1.2.9-1.9 2.4-1.1 3.8.6 1.2 2.5 2 3.8 1.1zm57.4-31l3.3 112.1c.1 3.6 5.7 3.8 5.6.2l-3.3-112.1c-.1-3.6-5.7-3.8-5.6-.2z"/><path d="M310.3 579.7c36.3-5.1 73.5-6.9 110.1-5.8 9.6.3 19.1.9 28.6 1.9 3.6.4 3.8-5.2.2-5.6-17.8-1.9-35.8-2.3-53.7-2.2-19.2.2-38.5 1.2-57.7 2.9-9.7.9-19.3 1.9-29 3.3-3.4.5-2.1 6 1.5 5.5z"/><path d="M455 528c-8.3 13-9.6 29.5-3.3 43.5 2.9 6.4 7.2 12 12.6 16.5 6.3 5.2 13.8 8.3 21.6 10.6 8.2 2.4 16.8 3.9 25.4 2.9 8.1-.9 16-3.6 23.3-7 12.9-6 24.8-15.9 29.2-29.8 4.7-15-.5-34.3-17-39.2-3.5-1-5.1 4.3-1.7 5.4 12.7 3.8 16.8 18.5 13.8 30.2-3.1 12.5-13.1 21.4-24.1 27.1-6.1 3.2-12.7 5.6-19.4 7-7.7 1.6-15.5 1.1-23.2-.7-13.4-3.2-26-9-33.3-21.2-7.8-13.1-7.3-29.5.8-42.3 2-3.1-2.8-6.1-4.7-3z"/><path d="M509.1 563c5.3-4.6 3.2-13.9-2.3-18.3-3-2.5-7.8-3.8-10.8-1.2-2.6 2.2-2.6 6-2.5 9.4.1 1.6.2 3.3 1.1 4.6 1.9 2.4 6.1 2.2 7.6 4.9.9 1.8.1 4-1.2 5.4-1.4 1.4-3.3 2.2-5 3.2-4 2.2-7.4 5.4-10 9.2 12.3-2.6 24.9-3.5 37.4-2.9-4.9-3.9-10.4-7.1-16.2-9.4"/><path d="M511 565.1c9-8.4 1.2-25.1-10.5-25.7-7.4-.4-10 6.6-9.8 12.8.1 3.1.4 6.2 3 8.2 1 .8 2.2 1.3 3.4 1.8.8.3 2.4.7 2.8 1.5 1.1 2.6-6.1 5.4-7.7 6.5-3.3 2.3-6.1 5.2-8.4 8.5-1.5 2.1.8 4.7 3 4.2 12.1-2.5 24.4-3.4 36.7-2.8 3 .2 3.6-3.6 1.6-5.2-5.1-4.1-10.8-7.3-16.9-9.7-3.4-1.3-5 4-1.7 5.4 5.6 2.2 10.8 5.3 15.6 9.1.5-1.7 1-3.5 1.6-5.2-12.8-.6-25.6.4-38.2 3l3 4.2c2.1-3 4.8-5.7 8-7.6 3-1.8 6.4-3.1 8.2-6.4 1.5-2.8 1.2-6.2-1.2-8.4-1-1-2.3-1.5-3.6-2-1-.4-2.3-.7-3-1.7-.7-1.1-.5-3.4-.5-4.6 0-1.5.1-3.2.9-4.5 1.7-2.8 5.6-1.3 7.6.2 4.1 3 6.6 10.3 2.4 14.2-2.7 2.6 1.1 6.6 3.7 4.2zm54.5 14.3c29.4-1.3 58.8-2 88.2-1.5 7.8.1 15.5.3 23.3.7 3.6.2 3.8-5.4.2-5.6-29.3-1.5-58.8-.9-88.2 0-7.8.2-15.5.5-23.3.9-3.6.1-3.9 5.7-.2 5.5z"/><path d="M673.5 576c.2 39.3 1 78.5 2.4 117.8.1 3.6 5.8 3.8 5.6.2-1.5-39.2-2.3-78.5-2.4-117.8 0-3.6-5.6-3.8-5.6-.2z"/><path d="M312.6 695c23.4-2.2 47.2.3 70.6 1.3 23.9 1 47.7 1.7 71.6 2.1 47.6.8 95.2.5 142.8-.9 26.8-.8 53.6-2 80.4-3.5 3.6-.2 3.8-5.8.2-5.6-47.7 2.7-95.4 4.3-143.2 4.8-47.6.5-95.2-.2-142.8-2.1-13.3-.5-26.6-1.1-39.8-1.8-13.2-.6-26.4-1.1-39.6.2-3.6.2-3.8 5.8-.2 5.5zm380.1 28.8c8.5-.4 17.2-.7 25.7-1.3 3.5-.3 7.1-.9 9.7-3.4 2.4-2.3 3.6-5.7 2.6-8.9-1.2-3.4-6.6-2.1-5.5 1.3 2 6-9.5 5.6-12.7 5.7-6.5.3-13.1.7-19.6 1-3.6.1-3.8 5.8-.2 5.6zm-422.9-10.5c7.2-1.6 15 2.9 17.1 10 1 3.5 6.5 2.2 5.5-1.3-2.9-10.1-13.6-16.5-23.9-14.1-3.5.8-2.2 6.3 1.3 5.4z"/><path d="M694.9 720.4c3.1-5.1 6.9-9.6 11.4-13.4 3.6-3 10.3-8.6 15.2-5.6 3.1 1.9 6-2.8 3-4.8-6.7-4.2-14.1.2-19.6 4.3a58.99 58.99 0 0 0-14.7 16.4c-2 3.2 2.8 6.2 4.7 3.1zm-338.5-89.3c39.4-1.6 78.9-1.7 118.3-.2 11.2.4 22.3 1 33.5 1.7 3.6.2 3.8-5.4.2-5.6-39.4-2.4-78.8-3.3-118.3-2.6-11.2.2-22.4.5-33.5 1-3.6.3-3.8 5.9-.2 5.7zm73.1 30.4c50.5 3 101 4.7 151.6 5.1 14.3.1 28.5.1 42.8 0 3.6 0 3.8-5.6.2-5.6-50.6.3-101.1-.6-151.6-2.9-14.3-.6-28.5-1.4-42.8-2.2-3.7-.3-3.8 5.3-.2 5.6z"/></svg>
+ data/CloudTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M274.7 425.2c-15 .3-30.5.7-43.9 7.5-13.4 6.8-34.6 24.1-30.7 38.6 2.9 11 1.9 13.1 1.9 24.4 0 15.4 4.2 28.3-10.8 31.9s-33.1 9.1-36.5 24.2c-4 18.1 16.7 31.1 33.9 38 31.6 12.7 64.1 25.5 98.2 26.4s70.6-12.9 87.7-42.4c25.8 24.3 69.7 26.2 97.4 4.2 31.7 36.6 94.3 40.2 130 7.5 32.2 24 77 29.7 114.2 14.7 13.4-5.4 26.1-13.4 40.4-15.5 18.5-2.7 36.9 4.7 55.5 5.6s41.2-9.5 41.5-28.2c.3-15.1-15.1-26.7-30.1-27.8s-29.5 5.2-43.2 11.5c-8.4-27.2-47.2-39-69.3-21.2 9.9-13.2.8-32.9-12.5-42.7-13.3-9.8-30-14.1-43.4-23.8-11.7-8.5-20.1-20.7-31-30.2-10.9-9.5-26.3-16.3-39.7-10.9 15.2-19.7-.3-50.7-23.3-60.1-23-9.4-49.1-3.9-73.3 2.2-1.1-34.9-41.5-58.4-76-52.9-41.1 6.5-62.3 43.5-101.8 51.8-20.2 4.3-41 5.5-49.4 27.8-5.3 13.9-2.4 34.7 14.2 39.4z" opacity=".7" fill="#dbebe7"/><path d="M826.6 539.5c-7.5 19.9-26.2 35.1-47.2 38.3s-43.4-5.7-56.5-22.5c-3.9 24.6-36.9 32.3-60.9 25.6-11.2-3.1-22-8-32.9-12.3 6.5-2.2 12.4-5.7 17.2-11 2-2.2 3.9-5.1 3.2-8-1.2-5.2-8.5-5.4-13.7-4.3-10.7 2.3-21.4 5.1-32.3 5-10.9-.1-22.4-3.6-29.4-11.9-10.8-12.8-7.9-31.8-6.3-48.6.8-8.7.8-44.2-15.7-36.6-2.9 1.4-8.2 37.9-13.9 45.3-11.7 14.9-29.6 24.1-48 28.5-7.8 1.8-15.9 3-22.9 7-6.8 3.9-12.3 11.7-10.8 19.4-6 5.6-10.2 13.8-17.5 17.7-20.6 11-40-18.3-62.9-23.1-12.8-2.7-24.4 2.6-36 9.5-7.2.2-14.3-1.2-20.6-4.6-13-7.2-20.3-25-12.7-37.8-10.8 18-44.8-16.9-51.6-20.8-17.3 17.5 3.6 46.5 24.8 48.3 5 15 18.5 26.8 33.9 30.2-4.7 2.2-9.5 3.9-14.5 4.8-36.6 6.3-71.5-33.9-105.8-30.4-2.1-1.1-4.2-2.1-6.5-2.9-13-4.4-30.3.8-34 14-3 11 4.6 22.7 14.5 28.4 9.9 5.8 21.6 7.2 32.8 9.6 31.1 6.5 60.6 20.7 92.2 22.8s68.3-12.7 76-43.5c29.9 29.6 83.3 30.6 114.4 2.3 12.2 19 34.5 31.2 57.1 31s44.7-12.6 56.6-31.9c16 22 42.7 36 69.9 36.6s54.5-12.1 71.5-33.4c21.7 10.5 45.9 21.2 69 14.5s38.2-40 19.5-55.2zm-317.8 30.2c-4.3-2-8.3-5-12.4-8 4.1-1.6 8.3-3.3 12.5-4.4 19.5-5.2 39.6.9 59.3 6.8-20.5 5.7-40.9 14.5-59.4 5.6z" opacity=".7" fill="#a9c9c2"/><path d="M211.4 520.2c-16.2-1.3-32.6 3.2-45.8 12.7-11.7 8.5-24.1 22.9-21.3 38.4 2.7 15.3 19.1 21.7 31.9 26.9 16.2 6.6 33.8 11.3 50.4 3.6 4.4-2.1.6-8.7-3.9-6.6-13.4 6.3-28.4 2-41.4-3.1-10.6-4.2-28.8-10-29.7-23.7-.8-13.3 11.6-25.2 22-31.6 11.4-7 24.5-10 37.8-8.9 5 .3 4.9-7.3 0-7.7z"/><path d="M226.7 518.2c-12.5 2.7-23.9-5.4-29.9-16-6.5-11.6-5.1-25.1.8-36.7 5.7-11.3 15-20.7 25.2-28 11-7.9 26-14.8 39.3-8.4 4.4 2.1 8.3-4.5 3.9-6.6-29.6-14.3-66.1 17.6-76.9 43.5-5.9 14.2-5.7 30.1 3.1 43.1 8.2 12.1 21.9 19.7 36.6 16.5 4.7-1.1 2.7-8.4-2.1-7.4z"/><path d="M266.4 425c-18.7-.9-20.6-23.5-14.5-36.8 6.1-13.2 17.6-23.8 30.6-30.2 13.1-6.4 28.2-8.3 42.5-5.1 7.3 1.6 14.2 4.3 20.6 8.1 6.1 3.7 17.2 10.7 17.7 18.6.3 4.9 7.9 4.9 7.6 0-.6-9.1-7.9-15.5-14.8-20.7-7.8-5.9-16.7-10.2-26.2-12.7-18.5-4.9-38.1-2.3-54.8 7-16.2 9.1-31 25.3-34 44.1-2.6 16.5 7.3 34.4 25.2 35.2 5 .3 5-7.3.1-7.5zm87.8-88.3c19.9-20.8 48.8-31.1 77.4-28.8 14.4 1.1 28.9 5.7 40.9 13.9 13.5 9.3 23.5 27 13.4 42.4-2.7 4.1 3.9 8 6.6 3.9 9.4-14.3 4.9-32.6-6.2-44.6-11.8-12.6-29.6-19.7-46.3-22.3-33-5.1-67.8 5.8-91 30.1-3.6 3.6 1.8 9 5.2 5.4zm158.1 21.8c23.6-5.1 50.6-6.8 70.6 9.1 16.6 13.1 22.6 39.2 5.4 54.6-3.7 3.3 1.7 8.7 5.4 5.4 18.9-16.8 15.1-46.4-2.2-62.7-21.9-20.7-53.7-19.8-81.2-13.8-4.9 1.1-2.8 8.4 2 7.4zm24.1 83.1c10.4 17.5 9.7 40.9-3.2 57-12.2 15.4-33.4 21.8-52.2 16.9-4.8-1.2-6.8 6.1-2 7.4 22.1 5.8 46.8-2 60.8-20.3 14.2-18.5 15.1-45 3.2-64.8-2.5-4.3-9.1-.4-6.6 3.8zm-272 38.5c-8.1 11.5-5.9 28.8 5.4 37.6 14.9 11.6 35.1 4 50.2-2.8 4.5-2 .6-8.6-3.9-6.6-11.7 5.2-27.8 12-40 4.5-9.8-6.1-11.5-19.8-5.1-28.9 2.9-4-3.8-7.8-6.6-3.8z"/><path d="M323.4 487.8c-12 15.3-24.9 41.2-7.6 57.7 18.8 18 45.4 4 63.2-7.6 4.1-2.7.3-9.3-3.9-6.6-14.3 9.3-35.3 22.6-52 10.4-16.8-12.3-4.1-36.1 5.6-48.5 3.1-3.8-2.3-9.2-5.3-5.4zm-92 89.4c7.3 13.7 15.1 27.9 27.1 38 12.1 10.2 27.5 14.7 43.3 13.6 35.1-2.5 61-27.8 84.2-51.6 3.4-3.5-2-8.9-5.4-5.4-21.2 21.8-44.8 46-76.8 49.2-15.1 1.5-30-2.2-41.4-12.5-10.8-9.6-17.7-22.7-24.4-35.2-2.3-4.3-8.9-.4-6.6 3.9z"/><path d="M371.4 584.6c19.5 16.6 45.1 25.2 70.7 23.4 18.8-1.3 55-11.3 48.6-37.2-1.2-4.8-8.6-2.8-7.4 2 2.8 11.2-9.3 19.3-18.4 22.7-9.7 3.7-20.3 5.2-30.6 5.1-21-.3-41.5-7.8-57.5-21.3-3.7-3.3-9.1 2.1-5.4 5.3zm234.4-161.8c28.3.8 48.3 27.2 41.3 54.7-1.2 4.8 6.2 6.8 7.4 2 8.2-32.3-15.4-63.5-48.7-64.3-5-.1-5 7.5 0 7.6zM582 534.2c-10.5 15.7 16.4 25.5 27.5 26.2 16.3 1 32.1-6.5 41.8-19.6 2.9-4-3.7-7.8-6.6-3.9-6.6 9-17.2 14.6-28.4 15.7-5 .5-10.1.1-14.9-1.3-4.6-1.3-17.2-6.6-12.8-13.3 2.8-4.1-3.8-7.9-6.6-3.8zm88-64.3c13.2 3.2 28 7 38 16.9 11.6 11.5 11.2 29.7-1 40.5-3.7 3.3 1.7 8.7 5.4 5.4 13.4-12 15.7-32.5 4.9-46.9-10.5-14-29-19.3-45.2-23.3-4.9-1.1-6.9 6.2-2.1 7.4z"/><path d="M722.4 522.5c4.8-9.7 16.8-12.5 26.7-9.7 6.1 1.8 11.7 5.3 16.6 9.3 2.5 2 4.9 4.2 7.2 6.4 1 1 2.1 2 3.1 3 1.4 1.4 2.5 1.6 4 2.7.3 2 .5 4 .8 6 10.8-11.9 27.5-17.2 43-12.2 7.2 2.3 13.8 6.8 18.7 12.6 2.6 3.1 10.5 16 2.6 17.7-4.8 1-2.8 8.4 2 7.4 8.2-1.8 9.8-10.9 8-18-2.5-9.7-11.3-17.9-19.7-22.8-19.8-11.5-44.9-6.9-60.1 9.9-1.8 2-1.2 4.5.8 6 6.4 4.7 12.4-3.8 9.3-9.8-2.2-4.2-6.8-7.6-10.3-10.7-4.2-3.8-8.6-7.3-13.5-10.2-14.8-8.5-37.3-8.7-45.9 8.6-2.1 4.4 4.5 8.2 6.7 3.8zM465.3 585c5.9 12.3 20.4 19.2 32.4 24 13 5.2 27.1 7.7 41.2 7.7 28 .1 55.5-9.9 76.4-28.6 3.7-3.3-1.8-8.7-5.4-5.4-18.9 17-43.8 26-69.1 26.4-12.2.2-24.3-1.7-35.8-5.6-11.8-4-27.3-10.7-33-22.4-2.2-4.3-8.8-.5-6.7 3.9z"/><path d="M606.5 592.5c23.4 21.1 55.6 30.9 86.9 27.7 15.3-1.6 30.2-6 43.6-13.7 7.7-4.4 26.7-18.6 12.9-27.6-3.3-2.1-7.1 2-5.2 5.2 7.9 13.5 22.2 21.2 37.6 23.2 18.2 2.4 36-3.8 52-12 13-6.7 34.9-16 26.8-34.4-2.3-5.3-9.1-16.3-15.8-16.6-5.9-.3-6.9 6.5-2.5 9.4 1.5.9 3.4.5 4.6-.6l.5-.5c3.6-3.3-1.8-8.7-5.4-5.4l-.5.5c1.5-.2 3.1-.4 4.6-.6.1 0 .2.1.3.1v3.9c-1.2 2.4-2.1.1-.4 2.8.7 1.1 2 2.1 2.9 3.1 2.2 2.5 4.4 5.5 5.4 8.8 2.5 8.2-5.6 12.4-11.5 15.8-11 6.5-22.4 12.6-34.8 16-20.3 5.7-45.7 2.4-57.2-17.3l-5.2 5.2c5 3.2-9.5 12.4-11.3 13.5-5.4 3.2-11 5.9-17 8-11.9 4.2-24.4 6.2-37 6.1-25.2-.2-50.1-9.1-68.9-26-3.6-3.3-9 2.1-5.4 5.4z"/></svg>
+ data/CoinTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st1{opacity:.7;fill:#cca700}</style><path d="M482.5 649.6c13.2.4 26.2-3 38.5-7.8 8-3.2 15.8-7 23-11.8 30.5-20.4 47.9-59.9 42.9-97.7-9.9-75.6-118.6-126.9-173.9-70.6-54.4 55.4-9.7 185.3 69.5 187.9z" opacity=".7" fill="#fe0"/><path class="st1" d="M566.2 630.4c24.1-16.6 32-49.1 32.8-79 .6-22.2-1.7-45-10.9-65.3-20.4-45.2-76.6-70-122.2-53.8 18.9-20 50.4-21.7 76.8-13.9 39.1 11.5 73.3 42.4 86.1 82 12.8 39.5 2 86.6-28.8 113.1-14.9 12.8-33.3 20.5-51.4 28"/><path d="M466 432.6c-21 .1-41.3 16.1-54.6 31.1-16.5 18.6-21.6 43.1-20.7 67.9 1.8 49.3 23.7 105 72 124.1 45.1 17.8 96.3-.8 122.6-40.7 27.3-41.2 26.7-97.8-.7-139.6-15.5-23.6-38.7-41.4-65.8-47.9-26.9-6.4-56-2-78.7 13.9-4.9 3.5 0 11.7 5 8.2 38.2-26.8 90.9-16.9 121.8 17.9 30.7 34.6 37.8 86.5 18.5 127.9-9.1 19.5-23.6 36.2-42.5 46.3-18.3 9.8-40.2 13.3-60.8 9.5-47.1-8.7-72.8-53.7-80-98.7-4-24.9-4.3-54.8 10.9-75.9 6.5-9.1 15-16.9 24.1-23.1 8.5-5.9 18.5-11.4 29-11.4 6.2.1 6-9.5-.1-9.5z"/><path d="M411.3 477.4c2.2-8.1 8-14.1 14.3-19.1 6.9-5.5 14.2-10.7 21.5-15.6 14.2-9.7 29.1-17.3 46-20.6 29.4-5.7 61.1 1.4 86 18.7 52.7 36.6 63.1 117.8 22 166-22.2 26-55.3 41.1-89.3 39.5-6-.3-5.8 9.3.2 9.6 32.9 1.5 65.2-11.7 88.8-34.7 24.2-23.6 36.9-57 35.1-91.4-1.8-34.3-17-68.5-43.4-90.5-25.5-21.3-59.4-31.5-91.8-27.8-20.5 2.3-38.9 10.1-56 21.5-8.9 5.9-17.8 12.2-26.1 19.1-7.5 6.2-13.7 13.5-16.3 23.2-1.7 5.6 7.5 8 9 2.1z"/><path d="M571.3 432.4c-3.7 9.6-7.5 19.3-11.2 28.9-2.2 5.6 6 10.4 8.2 4.7 3.7-9.6 7.5-19.3 11.2-28.9 2.3-5.7-6-10.4-8.2-4.7zm37.5 38.5c-5.7 5.9-10.7 12.5-14.7 19.8-3 5.3 5.3 10 8.2 4.7 3.7-6.6 8.1-12.5 13.3-17.8 4.3-4.4-2.5-11.1-6.8-6.7zm11.6 58.6c-4.7 3-9.5 6-14.2 9-5.1 3.2-.2 11.5 5 8.2 4.7-3 9.5-6 14.2-9 5-3.2.1-11.4-5-8.2zm-15.7 44.6c-2.2 2.1-4.4 4.2-6.7 6.3-1.8 1.7-1.5 5.1.2 6.8 2 1.9 4.8 1.6 6.6-.1 2.2-2.1 4.4-4.2 6.7-6.3 1.8-1.7 1.5-5.1-.2-6.8-1.9-1.9-4.8-1.7-6.6.1z"/><path class="st1" d="M483.9 544.3c-3.7-.6-7.3-1.2-11-1.8-1-16.8-1.2-36 11.1-47.5 9-8.5 23.8-10.2 34.4-3.9s16.3 20 13.3 32c-3.3 12.9-15.4 25.8-9 37.5 1.4 2.5 3.5 4.5 4.4 7.2 2.2 6.5-3.9 13.3-10.5 15-6.6 1.7-13.6.2-20.5 0-10.8-.3-30.9 5.9-32.1-8.7-.3-1.8 23.5-29.2 19.9-29.8z"/><path d="M469.4 578.3c5.3-5.9 10.5-13.1 11.4-21.2.4-3.2-.1-6.5-1.6-9.5-2-3.8-5.7-5.5-8.4-8.6-5-5.5-1.6-15 .5-21 2.4-6.8 6.1-13.3 10.9-18.8 8.9-10.1 23.6-16.3 35.5-7.3 5 3.8 8.5 9.5 9.8 15.5 1.6 7.3-1 13.3-4.7 19.5-2.4 4.2-4.9 8.4-6 13.2-1 4.5-.9 9-.1 13.5 1.9 10.1 7.7 19.1 13.3 27.5 2.7 4 9.2.2 6.5-3.8-5.2-7.7-10.6-15.9-12.5-25.2-.9-4.5-.7-9.2 1-13.5 1.6-4.2 4.3-7.9 6.4-11.9 6.9-13.1 3.9-29-7.2-39-11.4-10.2-27.7-9.8-39.8-1-12.2 8.9-20.7 24.1-23.3 38.9-.8 4.5-1 9.2.8 13.6 1.9 4.6 5.7 6.5 9 9.9 6.6 7.1-2.2 18.2-7 23.7-3 3.8 2.3 9.1 5.5 5.5zm-51.7-56.1c-2.2-23.2 11.4-46 32.8-55.1 3.3-1.4.5-6.3-2.9-4.9-23 9.8-38 35.1-35.6 60 .3 3.6 6 3.6 5.7 0z"/><path d="M532.3 628c18.4-9.4 33.3-25.4 41.6-44.4 8.6-19.7 9.5-42.1 2.9-62.5-3.7-11.6-9.7-22.2-17.6-31.4-2.4-2.8-6.4 1.2-4 4 13.3 15.5 20.5 35.7 20.3 56.1-.2 19.7-7.8 38.8-20.7 53.5-7.1 8.2-15.7 14.9-25.4 19.8-3.2 1.7-.4 6.6 2.9 4.9z"/></svg>
+ data/DogTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st1{fill:#ffa617}.st3{fill:#fff}</style><g opacity=".7"><path class="st1" d="M343.1 328.4c-2.2-4-4.5-8.5-3.8-13 .7-4.6 4.4-8 7.8-11.2 16.8-15.3 33.6-30.6 50.4-46-2.8-1.3-5.6-2.5-8.4-3.8 4.4-4.5 8.8-9 13.2-13.4-3.4-3.6-6.7-7.1-10.1-10.7 16.5-4.3 34.6-1.8 49.3 6.7 15.5-26 52.4-36.4 79.2-22.4 13.6-8.3 30.9-10.1 45.9-4.9 15 5.2 27.5 17.4 33.1 32.2 3.7-7.2 13.8-8.8 21.2-5.6s12.7 9.8 17.7 16.1c11.9 15.1 20.9 21.7 32.8 36.8 4.7 6 21.1 18 21.9 25.5.9 8.7-9.8 22.3-14.3 29.8-11 18.4-24.4 34.2-35.4 52.5-2 3.3-4.2 6.8-7.8 8-5.8 1.9-12-3.7-13-9.8s1.4-12.1 3.7-17.8c2.3-5.7 4.5-12 2.9-17.9-.9-3.3-3.8-6.7-7.2-5.9-1.6.4-2.8 1.7-3.8 2.9-11.4 13.5-16.2 32.2-12.6 49.5 2.4 11.6 3.2 25.6 6.6 37 5.3 17.6-17.9 18.6-30.5 23.3-37.9 14.2-80.4 15.7-119.2 4-14.7-4.4-29.3-11.6-35.3-26.6-2-5.2-.6-21.1-4.6-24.3-4.2-3.4-9 1.1-13.6 1.3-19.3.9-25.3-18.1-33.5-32.9-10.8-19.8-21.7-39.6-32.6-59.4zm41.8 281c-1.6 5.8-3.3 12.3-.5 17.7 2.8 5.4 12 7.1 14.5 1.6l.9 29.4c-7.3-12.8-20.9-21.8-35.6-23.3-14.7-1.5-29.9 4.4-39.7 15.4 9.2 5.8 18.5 11.6 27.8 17.4-15.6 9.1-23.5 28.5-21.7 46.5 1.9 18 12.2 34.3 25.6 46.5 4.2 3.8 8.9 7.5 11.7 12.4 2.8 5 3.3 11.8-.6 16-3.4 3.6-8.8 4.1-13.3 6.2-15.2 7-14.6 30.9-2.7 42.7s29.8 14.7 46.4 16.4c92 9.8 230.3 15.7 276.2-11.2 11.5-6.8 26.9-5.6 36.9-14.4s14.5-25.4 6.2-35.8c-6.8-8.5-20.7-12-22.2-22.7-1-6.8 3.8-12.9 7.8-18.5 15.1-21.4 20.7-52.9 3.9-73-4.3-5.1-10.2-11.1-7.6-17.2 2-4.8 8.5-6.8 9.8-11.8 1.7-6.2-6.3-11.2-12.7-10.4s-12 4.7-18.4 6c-9.7 1.9-20.3-3.5-24.5-12.4-4.2-8.9-1.5-20.6 6.1-26.8 2-1.6 4.3-3 5.8-5.1 2.6-3.7 2-8.7 1.2-13.1-5.9-32.5-17.4-64-33.8-92.6 1.2 2-71.4 20.6-78.5 21.6-27.4 3.9-55.3 4.4-82.8 1.3-18.6-2.1-58-28.1-60.7 2.5-2.3 27.6-17.9 62-25.5 88.7z"/><path class="st1" d="M275.9 758.7c-2.2 7-9.2 11.1-15.6 14.7-19.9 11.1-39.8 23.5-53.6 41.6s-20.8 43-12.4 64.2c7.9 19.7 29.1 33.1 50.2 31.9s40.6-17.1 46.1-37.6c-11.9 3.5-27.7 5.6-33.9-5.1-5.5-9.5 2.4-22 12.4-26.6s21.5-4 32.4-6c36.9-6.6 72.9-51.7 54.7-89.8-14.9-31.1-68.9-11.7-91.1-.7 7-.6 13 6.2 10.8 13.4z"/><path d="M505.5 483.7c6.1.2 12.3.3 18.2-1.5 5.9-1.8 11.4-6 13.5-12.2 3.8-11.2-5.1-23.7-2.1-35.2-17.5 2-40.2-34.6-53.1-2.8-10.1 24.9-3.7 50.9 23.5 51.7z" fill="#ff7878"/><path class="st3" d="M467.7 442.3c2.4-4.2 9.6-4.4 12.1-.2 2.6 4.1-.7 10.5-5.5 10.8s-8.9-5.6-6.9-10m74.2-3.9c3.4.5 6.3 3.3 6.9 6.7s-1.3 7-4.3 8.6"/><path d="M415.4 471.1c-7.3 5.6-6.3 17.7-.2 24.6s15.4 9.8 24.3 11.9c32.7 7.7 66.9 8.8 100.1 3.2 6.1-5.6 2.3-16.6-4.8-20.6-7.2-4.1-15.9-3.5-24.1-3.1-35.5 1.6-66.9-1.8-95.8-22.4-2.6 9.2 3.8 18.9 1.2 28.2M576.5 505c18.8-9.9 42.3-7.2 61.5-16.2-8.4-5.6-4.2-22.5-13.8-25.7-2.8-.9-5.8-.2-8.6.6-15.1 4-40.9 7.4-53.2 17.2-14.4 11.5-13 38.4 14.1 24.1z" fill="#03b4e6"/><path d="M550.1 525.1c-5-2.9-11.4 2.1-12.4 7.8-1.5 8.7 6.8 17.5 15.6 16.6s14.9-11.5 11.5-19.6-15.2-11.1-22-5.5m4.9-9.3c-.4-9.7-3.7-19.2-9.5-27.1 0-2.8 3.7-4.2 6.3-3.1s4 3.8 5 6.3c3.8 9.2 4.9 19.5 3.1 29.2" fill="#ffe603"/><path d="M482.1 405.1c-3.9 5.8-3.2 14.4 1.6 19.5 9.5-5.2 21.8-4.6 30.7 1.6 3.9-3.2 2.4-10-1.6-13.2-4-3.1-9.3-3.7-14.3-4.4s-10.4-1.7-13.9-5.4" fill="#423f39"/></g><path d="M469.9 363c-3.6 3.7-4.4 11.4-3 17.3 1.5 5.9 4.3 12.4 7.6 16.2 8.5 9.8 19 15.4 29.9 16.7 13.4 1.6 45.2-20 30-43.3-8-12.1-56.3-15.4-64.5-6.9z" fill="#1c1203"/><path d="M444.6 222.2c16.1-19.8 46.3-26.4 69.2-15.2 3.4 1.6 6.6-3.3 3.2-4.9-26-12.8-59-5.6-77.3 16.9-2.4 2.9 2.5 6.1 4.9 3.2z"/><path d="M514 208.4c12.7-10.2 29.5-14.8 45.6-12.3 15.4 2.4 29.7 11.7 38.4 24.6 2.1 3.1 7.3.4 5.2-2.7-9.8-14.5-25-24.6-42.3-27.6-18-3.1-36.7 2.2-50.8 13.6-2.9 2.5 1 6.8 3.9 4.4zm-80.5 16.1c-14.1-8.8-31.3-14.1-48-13.1-6.2.4-12.2 4.9-8.5 11.7 1.8 3.3 5.1 5.6 7.9 7.9 3.7 2.9 7.5 5.7 11.5 8.2.8-1.8 1.7-3.5 2.5-5.2-14.1-4-29.7 3.9-34.7 17.7-1.3 3.6 4.3 5.4 5.6 1.9 3.9-10.7 16.3-17.1 27.3-13.9 3.1.9 5.4-3.4 2.5-5.2-5.4-3.5-11.1-7.2-15.6-11.8-.9-.9-2.5-2.4-2-3.7.4-1.1 1.7-1.3 2.8-1.5 3-.4 6.3-.1 9.3.1 12.9.9 25.3 5.1 36.2 12 3.2 1.8 6.5-3.1 3.2-5.1zm-47.8 25.2c-28.7 18.5-54 41.7-75.1 68.6-1.8 2.2 1.4 5.9 3.8 4.2l4.5-3c3.1-2.1.4-7.3-2.7-5.2l-4.5 3c1.3 1.4 2.5 2.8 3.8 4.2 20.4-26.1 45.1-48.6 72.9-66.6 3.2-2 .5-7.3-2.7-5.2z"/><path d="M318 311c-4.3 4.9-8.9 11.7-4.5 18.1 1.7 2.5 4.5 3.7 7.5 3.6 3.3-.2 6.8-2.8 10.1-2.1.4-1.9.7-3.8 1.1-5.7-3.3.2-4.9 2.5-4.7 5.7.3 4.2 3.9 8 6.1 11.4 5.7 8.9 11.5 17.7 17.2 26.5 11.6 17.9 23.2 35.8 34.7 53.6 2 3.1 7.3.5 5.2-2.7-9.9-15.4-19.9-30.7-29.8-46.1l-14.7-22.8c-2.5-3.8-4.9-7.6-7.4-11.4-1.2-1.8-2.3-3.6-3.5-5.4-.5-.8-1.4-1.8-1.7-2.8-.1-.2-.1-.5-.2-.7.1-1.1-.4-1-1.5.3 2.9-.2 4.6-5 1.1-5.7-2-.4-3.9-.4-5.9.1-2.1.5-4.3 1.8-6.5 1.8-2.3-.1-3.1-2.2-2.9-4.3.3-2.8 2.5-5.2 4.3-7.2 2.4-2.7-1.5-7.1-4-4.2zm97.5-28.5c-7 6-9.9 14.8-11.7 23.5-2.2 10.4-4.1 21-5.6 31.6-3.1 21.5-3.8 43.8 3 64.8 1.2 3.6 6.9 2.3 5.7-1.3-6.4-19.7-6-40.5-3.2-60.8 1.4-10.2 3.2-20.4 5.3-30.5 1.7-8.3 3.8-17.1 10.5-22.9 2.9-2.5-1.1-6.8-4-4.4zm85 77.6c-17-4.9-39.2 8.5-35.3 28 4 20.1 29.1 28.5 47 27.9 3.8-.1 4.1-6 .3-5.9-14.8.5-34.9-5.1-40.8-20.5-6-15.8 13.2-27.9 27-23.9 3.6 1 5.5-4.5 1.8-5.6z"/><path d="M525.1 368.3c7.4 5.1 10.7 15.2 8.1 23.8-2.7 8.8-11.3 15-20.5 14.2-3.8-.3-4.1 5.5-.3 5.9 11.7 1 23-7 26.4-18.2 3.4-11.1-.9-23.9-10.5-30.5-3.1-2.3-6.3 2.6-3.2 4.8zm-52.5 18.4c8.5 3.1 17.3 4.2 26.2 3.4 3.8-.3 2.5-6.1-1.3-5.7-7.9.7-15.7-.5-23.1-3.2-3.5-1.4-5.3 4.2-1.8 5.5zm-8.9-78.7c3.8.2 4.1-5.7.3-5.9-3.8-.2-4.1 5.7-.3 5.9z"/><path d="M464.9 303.4c-4.4-3.1-10.9-11-4-15.2 6.6-4.1 9.6 10.6 9.5 14.7-.1 3.1-1 5.8-4.6 5.5-2.6-.3-4.8-2-6.2-4.2-1.2-2-1.8-4.4-1.7-6.7.1-1.3.3-2.6.8-3.8.2-.5.5-.9.7-1.4.2-.3.4-.6.7-.9.6-.5.4-1-.7-1.5.1-.8.3-1.5.4-2.2l-.3.6c-1.7 3.3 3.2 6.6 4.9 3.2 2-3.9-1.5-8-5.7-6.3-3.6 1.5-5.8 6.1-6.4 9.7-1.4 7.6 2.5 16.5 10.3 18.9 23.4 7.1 13.6-41.7-4.7-30.5-4.3 2.6-6.5 7.7-5.5 12.6 1 5.4 5 9.6 9.4 12.6 3 2 6.2-2.9 3.1-5.1zm91.4 6.6c.2-4.6 1.1-9.5 3.5-13.5 1.4-2.4 7.1-7.5 7.2-1.6 0 4.4-8.7 20.6-13.9 14.4-2.4-2.9-6.8 1-4.4 3.9 10.2 12.1 25.9-10.3 24-20.4-1.3-6.7-8.4-8.3-13.5-4.5-6.3 4.8-8.4 13.9-8.7 21.4-.3 3.8 5.6 4.1 5.8.3zm-11.4-56.3c-1.4-3.1-3.3-7-2.5-10.5.5-2.3 3.3-4.9 5.7-3.4 3.2 2 6.4-2.9 3.2-4.9-4.6-2.9-10.3-.8-13.1 3.5-3.7 5.6-1 12.6 1.5 18 1.6 3.5 6.8.8 5.2-2.7zm-70.9 1.4c2.7-7.7-1.2-15.9-8.5-19.2-1.3-.6-2.6.2-3.4 1.2-2.5 3-2.2 6.9 0 9.9 2.2 3.1 6.5-.9 4.4-3.9-.7-1-.1-2 .6-2.8-1.1.4-2.3.8-3.4 1.2 4.4 2 6.3 7.4 4.8 11.8-1.3 3.6 4.3 5.4 5.5 1.8z"/><path d="M555.7 309.5c-.6-4.7-.9-13.8 5.2-15.3 5.4-1.3 5.2 7.3 4.5 10.5-.7 3.6-4.7 13.7-10 10.1-2.3-1.5-1.9-5.3-1.1-7.5 1.1-2.9 3.3-5.2 5.4-7.5 2.6-2.7-1.3-7.1-3.9-4.4-3.5 3.7-7 7.7-7.8 12.9-.6 4.1.5 8.9 4.2 11.3 9.3 6.1 17.1-5.4 18.8-13.2 1.5-7 0-18.5-9.4-18.3-11.3.2-12.8 14.2-11.7 22.6.6 3.8 6.3 2.5 5.8-1.2z"/><path d="M560.2 293.7c5 1.4 9.5 3.6 13.6 6.8 3 2.3 6.2-2.6 3.2-4.9-4.5-3.5-9.5-6-15-7.5-3.6-1-5.4 4.6-1.8 5.6zm-96.6-9.5c-5.9-.8-11.8.5-16.9 3.5-3.2 1.9-.6 7.1 2.7 5.2 4.3-2.6 8.9-3.5 13.9-2.8 3.8.5 4.1-5.4.3-5.9zM443 334.8c-12.6 6.4-19.2 22.2-14.6 35.6 1.2 3.5 7 2.3 5.7-1.3-3.8-11 1-23.8 11.5-29.2 3.5-1.6.8-6.8-2.6-5.1z"/><path d="M437.5 358c-15.4 12.1-22.6 33.1-15.4 51.7 7.2 18.5 25.8 27.6 45 24.8 11-1.7 21.2-6.7 30-13.3 3-2.3-.9-6.6-3.9-4.4-16.4 12.5-42.5 19.1-58.4 2.1-15.8-17-10.6-42.9 6.8-56.5 2.8-2.3-1.1-6.7-4.1-4.4z"/><path d="M497.8 421.1c9.3 5.1 18.7 10.3 29 13.1 9.2 2.5 18.9 2.8 28.2.8 16.4-3.4 37.3-15.4 39.9-33.6 1.7-11.8-4.9-23-11-32.6-2-3.2-7.2-.5-5.2 2.7 6 9.5 13.8 21.9 9.2 33.6-3.8 9.5-13.9 16.5-22.9 20.5-9.4 4.2-20 5.7-30.2 4.2-12.2-1.7-23.2-7.9-33.8-13.8-3.3-1.7-6.5 3.2-3.2 5.1zm-24.1 36.6c-.8 6.5-1.1 14.4 1.1 20.6 1.8 5.2 9.3 2.9 7-2.1-1.6-3.4-6.8-.7-5.2 2.7.1.1.1.3.2.4 0-1 .1-2 .1-3-.1.2-.2.3-.3.5.6-.4 1.2-.8 1.8-1.3-.2 0-.4.1-.6.1.8.1 1.5.3 2.2.4.5.6.5.3 0-.9-.2-.8-.3-1.6-.4-2.4-.3-1.7-.4-3.5-.5-5.2-.1-3.2 0-6.4.4-9.6.5-3.7-5.4-4-5.8-.2z"/><path d="M531.8 474.9h-.3c-1.4.1-2.4.7-2.9 2-1.4 3.6 3 6.2 5.8 3.7 1.4-1.2 2-3.6 2.6-5.3 1-2.5 1.8-5.1 2.4-7.8 2.3-10 2.3-20.4 0-30.4-.9-3.7-6.6-2.4-5.7 1.3 1.5 6.4 2 12.9 1.4 19.5-.3 3.2-.8 6.4-1.7 9.5-.4 1.5-.8 3-1.4 4.5-.3.8-1 4-1.7 4.3 1 0 2 .1 3 .1-.1-.1-.2-.1-.3-.2.4.6.8 1.2 1.3 1.8v.8c-1 .7-2 1.3-2.9 2h.3c3.6-.1 3.9-5.9.1-5.8zM504 452c-2-6.9-.6-14.4 4.2-19.9 2.5-2.8-1.4-7.2-3.9-4.4-6.2 7-8.7 16.4-6 25.5 1 3.7 6.7 2.5 5.7-1.2zm102.8-209.4c6.7-6.8 15.3-11.3 24.8-12.7 3.3-.5 9.6-1 9.4 3.8-.2 4.9-4 10.5-7.1 14-1.9 2.2-.4 5.4 2.6 5.1 1.6-.2 5.4-.7 4.9 1.8-.3 1.5 1.3 3.1 2.8 3.1 1.6 0 3.2-.1 4.7-.1-.9-1-1.9-2.1-2.8-3.1.9 20.4.1 40.7-2.4 61-.5 3.8 5.4 4 5.9.3 2.5-20.2 3.3-40.6 2.4-61-.1-1.5-1.1-3.1-2.8-3.1-1.6 0-3.2.1-4.7.1.9 1 1.9 2.1 2.8 3.1.5-2.6-.8-5.1-2.9-6.6-2.7-1.9-6-1.7-9.2-1.3.9 1.7 1.7 3.4 2.6 5.1 4.2-4.9 8.2-11 9-17.6.8-6.1-3.7-9.9-9.4-10.6-5.9-.8-12.3 1.1-17.7 3.2-6.3 2.5-12 6.3-16.8 11.1-2.7 2.7 1.3 7.1 3.9 4.4zm52.5 20.8c17.4 6.5 30.3 22 33.7 40.2.7 3.7 6.4 2.5 5.7-1.3-3.8-20.2-18.4-37.4-37.6-44.5-3.5-1.3-5.3 4.2-1.8 5.6z"/><path d="M681.9 293.6c5.8 2.2 11.4 4.8 16.8 8 2.3 1.4 4.5 2.8 6.7 4.4 1 .7 2.5 1.5 3.3 2.5 1.1 1.5.6 2.6-.1 4.2-4.8 11-10.7 21.5-16.6 31.9-12 20.9-25.6 40.9-40.7 59.7-2.4 3 2.6 6.1 4.9 3.2 13.1-16.3 25.1-33.5 35.9-51.5 5.4-9 10.4-18.1 15.2-27.5 2.3-4.5 4.5-8.9 6.6-13.5 1.9-4.1 2-7.8-1.5-11.1-3.7-3.5-8.5-6.2-12.9-8.7-5-2.8-10.3-5.2-15.7-7.2-3.6-1.2-5.5 4.3-1.9 5.6zm-45.2 56.6c-6.6 21.6-8 44.4-4 66.5.4 2 2.5 2.6 4.2 2 2.8-1.1 4.1-3.3 4.6-6.1.7-3.7-5.2-4-5.9-.3-.2.7-.7 1.1-1.4 1.2 1.4.7 2.8 1.3 4.2 2-3.8-21.1-2.4-42.9 3.9-63.4 1.1-3.7-4.5-5.5-5.6-1.9z"/><path d="M642.4 423.6l18.6-38.7c1.6-3.4-4-5.2-5.6-1.9l-18.6 38.7c-1.6 3.5 4 5.3 5.6 1.9zm-21.7-131.8c12.1 40.8-2.4 82.5-16.7 120.6-1.3 3.5 4.2 5.4 5.6 1.9 14.7-39.1 29.2-82 16.9-123.8-1.1-3.6-6.9-2.4-5.8 1.3zm-160.6-2.4c-2.5 5.6.5 11.8 5.9 14.2 1.9.9 3.6-1 3.9-2.6.7-4.2-.2-8.4-2.6-12-1.4-2-4.6-2.2-5.4.4-2.4 7.5.4 15.6 6.8 20.1 2.2 1.5 4.9-.7 4.5-3.1-.6-3.8-1.5-7.5-2.8-11.1-.8-2.3-1.6-6.5-4.7-6.7-5.1-.3-4.5 8.8.6 7.3 3.6-1.1 2.4-6.8-1.3-5.7-.1 0-.2.1-.3.1.8.1 1.5.3 2.2.4-.1 0-.1-.1-.2-.1.4.6.8 1.2 1.3 1.8-.1.3-.1.6-.2.9-.6.4-1.2.8-1.8 1.3.1 0 .2-.1.2-.1-.8-.1-1.5-.3-2.2-.4-.4-.3.5 2 .6 2.3.5 1.4.9 2.8 1.3 4.2.7 2.4 1.2 4.8 1.5 7.3 1.5-1 3-2.1 4.5-3.1-4.3-3-6-8.4-4.4-13.3-1.8.1-3.6.3-5.4.4 1.9 2.8 2.5 5.6 2 9 1.3-.9 2.6-1.8 3.9-2.6-2.7-1.2-3.2-4.3-2.1-6.8 1.4-3.7-4.2-5.5-5.8-2.1zm103.3 3.6c-5.8 3-8.3 10-6.6 16.2.6 2.2 3 2.9 4.8 1.5 3.8-2.9 5.7-7.4 5.9-12.1.1-2.6-3-3.9-4.9-2.3-3.9 3.2-5.9 8-5.6 13 .1 1.7 1.6 3.7 3.6 3 4.2-1.5 6.5-5.7 5.2-10-.6-1.9-2.4-2.8-4.2-2-5.3 2.5-7.5 8.1-7 13.6.3 3.8 6.1 2.5 5.7-1.3-.3-3 1.3-5.9 4-7.1-1.4-.7-2.8-1.3-4.2-2 .3.9.5 2.6-.7 3l3.6 3c-.2-3.6.9-6.7 3.7-9-1.6-.8-3.3-1.5-4.9-2.3-.1 3.3-1.4 6-4 8l4.8 1.5c-1-3.6.1-7.9 3.6-9.7 3.3-1.5.6-6.8-2.8-5zM412.8 403.1c-.5-.6-1.1-1.2-1.6-1.8-.5-.6-1.3-.9-2-1-.7 0-1.6.2-2.1.8-1.1 1.1-1.3 2.9-.2 4.1.5.6 1.1 1.2 1.6 1.8.5.6 1.3.9 2 1 .7 0 1.6-.2 2.1-.8 1.2-1.1 1.3-2.9.2-4.1z"/><path d="M405.1 404.3c3.2 11 2.6 22.4-1.8 33 1.8-.1 3.6-.3 5.4-.4-6.9-13.1-13-26.7-18-40.6-1.3-3.5-7-2.3-5.7 1.3 5.2 14.5 11.3 28.5 18.5 42.1 1.2 2.4 4.5 1.8 5.4-.4 4.8-11.5 5.5-24.2 2-36.1-1.2-3.8-6.9-2.6-5.8 1.1zm64.7 42.3c-2.1-2.9.8-6.3 4-5.4 2.6.7 3 4.7.7 6.1-3.1 2-.5 7.3 2.7 5.2 6.5-4.2 6.1-15-2-17.1-3.5-.9-7.5.2-9.8 3-3 3.6-2.5 8.4.1 12 .9 1.3 3.1 1.2 4.1.2 1.3-1 1.1-2.7.2-4zm73.3-.9c.2 4.8-1.2 9.4-4.5 13-2.5 2.8 1.4 7.2 3.9 4.4 4.2-4.8 6.6-10.6 6.4-17-.1-3.8-6-4.2-5.8-.4z"/><path class="st3" d="M457.8 291.5c0 .6-.1 1.1-.1 1.7 0 .8.2 1.6.8 2.1.5.5 1.3 1 2 1 1.6 0 3-1.1 3.1-2.8 0-.6.1-1.1.1-1.7 0-.8-.2-1.6-.8-2.1-.5-.5-1.3-1-2-1-1.6.1-3 1.2-3.1 2.8zm102.6 5.6c-.8 1.3-.7 2.9.3 4 .6.7 1.7 1.1 2.6 1.2 1 0 2-.2 2.7-.9 1.1-1 1.4-2.7.7-4-.4-.7-1-1.2-1.7-1.4-.7-.2-1.6-.2-2.3.2s-1.2 1-1.4 1.7c-.2.8-.2 1.6.2 2.3v.1c-.1-.2-.2-.5-.3-.7v.1c0-.3 0-.5-.1-.8v.1c0-.3.1-.5.1-.8v.1c.1-.2.2-.5.3-.7.2-.2.3-.4.5-.6l-.1.1c.2-.1.4-.3.6-.4 0 0-.1 0-.1.1.2-.1.5-.2.7-.3-.1 0-.2 0-.2.1.3 0 .5 0 .8-.1h-.4c.3 0 .5.1.8.1-.1 0-.2 0-.2-.1.2.1.5.2.7.3 0 0-.1 0-.1-.1.2.2.4.3.6.5l-.1-.1c.1.2.3.4.4.6v-.1c.1.2.2.5.3.7v-.1c0 .3 0 .5.1.8v-.1c0 .3-.1.5-.1.8v-.1c-.1.2-.2.5-.3.7v-.1c.4-.6.6-1.5.4-2.2-.2-.7-.6-1.5-1.3-1.8-1.4-.7-3.2-.4-4.1.9z"/><path d="M413.9 442.7c-7.6 52.1-18.5 103.7-32.7 154.4-1 3.6 4.6 5.5 5.6 1.8 14.2-51.2 25.2-103.4 33-156 .5-3.7-5.4-3.9-5.9-.2z"/><path d="M392.1 585.7c-6.3 6.6-11.8 13.9-16 22-3.2 6.1-6.1 12.7-4.8 19.8 1.1 5.8 6 10 12.1 8.5 2.9-.7 5.2-2.5 7.6-4.2 2.1-1.5 4.6-3.8 7.3-2.6-.7-1-1.3-2-2-2.9-1.7 10.2-3.4 20.3-5.1 30.5.5-.8 1-1.6 1.6-2.5-.1.1-.3.1-.4.2.8-.1 1.5-.1 2.3-.2-2.3-.5 0 6.2.1 6.8.5 1.7.9 3.3 1.4 5 .8 2.9 1.6 5.8 2.5 8.8 1.8 6.2 3.5 12.5 5.3 18.8 3.4 12.1 6.8 24.2 10.2 36.2 7 24.6 13.9 49.2 20.9 73.8 1 3.6 6.8 2.4 5.7-1.3-8.2-29-16.4-57.9-24.6-86.9-4.1-14.4-8.1-28.8-12.2-43.1-1-3.5-2-7.1-3-10.6-.8-2.7-1.2-6.2-3.2-8.4-3.1-3.3-8.9-1.3-7.7 3.6.5 2.1 2.4 3.5 4.6 2.9 3-.9 2.8-5.4 3.2-7.9 1.4-8.5 2.9-16.9 4.3-25.4.2-1.3-.9-2.5-2-2.9-4.9-2.1-9.3 1.1-13.1 3.8-3.7 2.6-8.9 5-10-1.3-1.1-6.1 2.2-12.1 5-17.2 3.8-6.9 8.5-13.2 14-18.9 2.6-2.7-1.3-7.1-4-4.4zm219.3-176.3c7.8 24.9 15.7 49.8 23.5 74.7 7.7 24.5 16 48.9 22.9 73.6 3.7 13.3 6.4 27 5.5 40.9-.2 3.8 5.6 4.1 5.9.3 1.7-25-7.5-49.1-14.8-72.5-7.9-25.1-15.8-50.2-23.7-75.4-4.5-14.3-9-28.6-13.5-43-1.1-3.4-6.9-2.2-5.8 1.4z"/><path d="M640.6 554.5a61.66 61.66 0 0 1 26.6 28.9c2.7 5.9 4.4 12.3 5 18.8.1 1.4.7 3.7-1.1 3.9-1.5.2-3-1.3-3.9-2.2-2.4-2.4-4.4-4.7-7.7-5.9-2.1-.7-4.4 1.3-3.8 3.4 5.3 20.5 10 41.1 11.4 62.2 1.4 21.8-.7 43.6-4 65-1.9 12.5-4.3 24.8-6.6 37.2-.7 3.7 4.9 5.5 5.6 1.8 4.2-21.9 8.4-43.9 10.3-66.1 1-11.2 1.4-22.6.8-33.8-.5-10.6-2-21.2-3.5-31.7-1.8-12.1-5.2-24.1-8.2-35.9-1.3 1.1-2.5 2.3-3.8 3.4 3.8 1.3 5.7 5.7 9.4 7.4 2.9 1.3 6.6 1.5 9-.8 3-2.8 2.1-7.6 1.6-11.2-.5-4.1-1.5-8.2-2.9-12.2-5.4-15.7-16.4-29.2-31-37.2-3.3-1.7-6.5 3.2-3.2 5zM443 784.2c-3.1 13-5 26.3-5.5 39.7-.1 3.8 5.7 4.1 5.9.3.5-12.9 2.2-25.6 5.2-38.2.9-3.6-4.7-5.5-5.6-1.8z"/><path d="M449.3 829.1c-9.1-9-22.6-19.8-35.8-11.6-6.2 3.9-7.7 10.7-7.5 17.6.2 8.8 1.7 17.4 4.3 25.8 1.1 3.6 6.9 2.3 5.7-1.3-2-6.4-3.4-13.1-3.9-19.8-.5-5.7-1.3-13.4 4.1-17.1 10.3-7.1 21.8 3.5 28.8 10.3 2.6 2.6 7-1.3 4.3-3.9z"/><path d="M464.4 820.2c-14.9 6.1-26.2 19.4-30 35-.3 1.4.2 3.4 1.9 3.7 4.7 1 8.7-.4 11.8-4.1 2.4-2.9-2.5-6.1-4.9-3.2-1.2 1.4-3.2 2.1-5 1.8.6 1.2 1.2 2.5 1.9 3.7 3.4-14.3 13.5-26.1 27.1-31.7 3.4-1.4.7-6.6-2.8-5.2zm12.9 13.3c-5.8 7.1-6.7 16.9-2.9 25.1 1.6 3.4 6.8.7 5.2-2.7-3-6.5-1.8-13.7 2.6-19.2 2.4-3-2.5-6.2-4.9-3.2zM445 871.4c31.1 2.9 62.5 1.2 93.2-5.1 3.7-.8 2.4-6.5-1.3-5.7-30.1 6.2-61 7.8-91.6 5-3.8-.4-4.1 5.5-.3 5.8zm62-177.6c3.9 16.2 9.8 31.8 17.6 46.5 2 3.7 4 7.3 6.2 10.9 1.9 3.1 4.4 6.1 5.4 9.6.3 1.1.7 2.7-.2 3.6-1.2 1.1-4.2 0-5.5-.6-3.6-1.5-6.2-4.3-7.8-7.8l-4.8 3.3c20.8 26.7 20.3 63 19.4 95.1-.1 3.8 5.8 4.1 5.9.3.9-33.9 1-71.3-20.9-99.3-2.1-2.7-6.1.4-4.8 3.3 3 6.7 12.4 14.5 20.3 11.2 8.9-3.7 2.8-14.3-.6-19.6-11.3-17.8-19.6-37.4-24.5-58-.9-3.5-6.6-2.2-5.7 1.5zm86.1 150.9c3.1-4.9 11.5-13.9 14.9-4.2 2.6 7.6 2.4 16.6 1.3 24.5-.5 3.8 5.4 4 5.9.3.8-6.2.8-12.4 0-18.7-.6-4.6-1.4-10-4.8-13.5-7.8-8.2-17.9 1.5-22.2 8.3-2.1 3.3 2.9 6.5 4.9 3.3zm36.1-17.1c5.6-2.5 12 1.5 14.9 6.3 3.7 6.3 3.5 14.1 3.4 21.2 0 3.8 5.8 4.1 5.9.3.1-9.2 0-19.5-6-27-5-6.2-13.4-9.3-20.9-6-3.4 1.5-.7 6.8 2.7 5.2z"/><path d="M653.7 838.2c5.7 2.2 8.7 9.6 5.8 15-1.8 3.3 3.1 6.6 4.9 3.2 4.7-8.9.6-20.3-8.9-23.8-3.5-1.4-5.4 4.2-1.8 5.6zm-79.8-186.4c.8 18.3-9.8 34.1-18.3 49.4-4.3 7.7-8.4 15.7-10.8 24.2-1.1 3.9-1.8 8-2 12.1-.2 4-.2 8.9 1.7 12.5 2.6 5.2 8.2 4.9 12.6 2.1 5.8-3.8 11.3-8.2 16.9-12.3-1.6-1-3.2-2.1-4.8-3.1-6.2 19.7-12.5 39.3-18.7 59-.8 2.5 1.8 4.6 4.1 3.5 2.6-1.2 5.1-2.3 7.7-3.5-1.2-.2-2.4-.4-3.5-.6 3.5 4.7 2.8 11 1.6 16.4-1.5 6.7-3.5 13.3-4.8 20.1-2.8 14.4-4.2 29-4 43.7 0 3.8 5.9 4.1 5.9.3-.2-16.2 1.4-32.4 5-48.2 2.7-11.6 8.8-25.5.7-36.2-.8-1.1-2.4-1.2-3.5-.6-2.6 1.2-5.1 2.3-7.7 3.5 1.4 1.2 2.8 2.4 4.1 3.5 6.2-19.7 12.5-39.3 18.7-59 1-3-2.5-4.8-4.8-3.1-4.5 3.3-9 6.5-13.4 9.8-1.5 1.1-5 4.5-6.7 2.5-1.1-1.3-1.1-4.4-1.2-6-.4-7.5 1.4-14.9 4.2-21.8 5.9-14.8 15.6-27.7 21.7-42.4 3.4-8.1 5.5-16.7 5.1-25.4-.1-3.9-5.9-4.2-5.8-.4z"/><path d="M559.7 865c24.2 14.4 55.7 12.9 78.6-3.3 3.1-2.2-.9-6.5-3.9-4.4-20.7 14.6-49.7 15.6-71.5 2.7-3.2-1.8-6.4 3.1-3.2 5zm81.8-44.3c.6-4.2 7.8-46.9 11.8-45.8 3.6 1 5.5-4.5 1.8-5.6-9.4-2.7-11.5 12.4-13 18.3-2.8 10.8-4.9 21.8-6.5 32.8-.5 3.8 5.4 4.1 5.9.3zm29.9-175.8c10.8-8.3 28.8-12.2 41-4.6 5.6 3.5 8.3 11.5 1.7 15.4-5 3-10.9 3.6-15 8.1-1.1 1.2-1.5 3.7.4 4.6 19 9.5 24.9 31.4 23 51.1-1.9 19.9-9.9 39.2-21.7 55.2-6.6 9-14.6 17-23.5 23.7-3 2.3.9 6.6 3.9 4.4 16.9-12.8 30.2-29.9 38.5-49.4 8.6-20.1 13.1-44.7 4.7-65.5-4.1-10.3-11.7-19.4-21.7-24.4.1 1.5.2 3.1.4 4.6 5-5.5 13.8-5 18.5-11.2 4.9-6.6 1.8-15.7-4.2-20.4-6.8-5.3-16.6-6.5-24.9-5.8-9.1.8-17.7 4.2-24.9 9.8-3.2 2.3.8 6.7 3.8 4.4z"/><path d="M674.6 807.1c8.3-12 22.2-22 37.5-20.2 6.8.8 13.2 4.4 17.8 9.4 2.2 2.5 4 5.4 5 8.6.4 1.4 2.3 9 .2 9.7-3.6 1.1-2.3 6.9 1.3 5.7 8.7-2.7 5.3-16.1 2.1-21.9-4.2-7.7-11.7-13.6-20-16.2-19-5.9-38.3 6.4-48.8 21.6-2.2 3.2 2.7 6.4 4.9 3.3z"/><path d="M701.1 815.2c6.4-3.3 14.8-2.4 20.1 2.7 5.3 5.1 6.6 13.8 3.3 20.3-3.2 6.1-9.6 9.3-16 10.7-3.4.7-6.9 1.1-10.4 1.2-1.8.1-3.6.1-5.5 0-.8 0-1.5 0-2.2-.1h-1.3c-1-.3-1.2-.1-.6.7-.1.8-.3 1.5-.4 2.2-.2.1-.5.3-.7.4-.9-.3-1.9-.6-2.8-.9l.3.3c2.8 2.5 7.2-1.4 4.4-3.9-2.6-2.3-7-.7-6.5 3.2.6 4.2 5.6 3.9 8.7 4 8.2.2 16.8-.2 24.5-3.2 7.4-2.9 13.7-8.7 15.6-16.6 2-8.1-.3-17.2-6.6-22.8-7.2-6.5-17.9-7.7-26.5-3.3-3.4 1.6-.7 6.8 2.6 5.1z"/><path d="M710.1 834.2c1.8 4.5 2.6 9.1 2.5 13.9-.1 3.8 5.8 4.1 5.9.3.2-5.9-.9-11.5-3.2-16.9-1.4-3.5-6.6-.8-5.2 2.7zM390.5 645.8c-12.8-11.3-29.8-16.4-46.7-14.9-8.5.7-17 3.1-24.5 7.2-4.9 2.7-18 9.7-13 16.8 2.9 4.1 9.2 4.5 13.6 5.4 6.8 1.4 13.6 2.9 20.4 4.3-.4-1.7-.7-3.3-1-5-8.3 6.5-15.3 14.6-20.2 23.9-2 3.8-4.3 8.7-1.5 12.8 2.2 3.3 6.5 4.1 9.6 1.6 2.6-2.1-.5-6.5-3.3-4.8-6.9 4.1-7.1 12.5-5.9 19.7 1.6 8.9 4.4 17.7 8 25.9 7.3 16.8 18.5 31.7 32.5 43.6 2.9 2.5 6.1-2.5 3.2-4.9-12.1-10.3-21.9-23.3-28.8-37.7-3.4-7.1-6-14.5-7.9-22.2-1.3-5.2-4.4-15.7 1.6-19.3l-3.3-4.8c-1.1.8-.8-3.1-.7-3.6.5-1.5 1.2-2.8 2-4.2 1.5-2.8 3.3-5.6 5.2-8.2 3.8-5.2 8.4-9.7 13.5-13.6 1.6-1.3 1.1-4.5-1-5l-18.6-3.9c-3.1-.7-6.4-1.1-9.4-2-.7-.2-1.7-.4-2.3-.9-1.2-1-.7-1 .5-2.1 6.4-6 14.9-10 23.4-12 17.4-4.1 36.8-.3 50.4 11.7 2.7 2.6 7-1.3 4.2-3.8zm3.5 155.9c-9-.7-15.3-9.2-23.4-12.4-9-3.5-19-.3-26.2 5.7-8.1 6.6-12.4 16.7-16.1 26.2-3 7.6-6.1 17.3 1.2 23.4.7.6 2.2.6 3 .2 1.6-1 3.1-1.9 4.7-2.9 3.2-2 .5-7.2-2.7-5.2-1.6 1-3.1 1.9-4.7 2.9 1 0 2 .1 3 .2-5.5-4.6 1-16.5 3-21.3 3.5-8.3 8.1-16.8 16.1-21.4 7.6-4.4 15.1-3.8 22.3 1 6.2 4.1 11.8 9.1 19.6 9.7 3.6.1 3.9-5.8.2-6.1z"/><path d="M368.9 820.3c-9.4 6.5-13.7 18.9-10.6 29.9 1 3.6 6.8 2.4 5.7-1.3-2.6-9.2 1-18.8 8.8-24.3 3.2-2.1-.8-6.4-3.9-4.3zm-37.2 13.5c4.3 7.7 11.4 13.4 19.9 15.8 3.6 1 5.5-4.6 1.9-5.6-7.1-2-13-6.4-16.5-12.9-1.9-3.3-7.2-.6-5.3 2.7z"/><path d="M356.6 844.6c-2.6 9.4 7.9 14.1 15.1 16.1 11.7 3.2 23.9 4.9 36 5 3.8 0 4.1-5.8.3-5.9-9.6-.1-19.1-1-28.4-3.2-3.9-.9-19.4-3.4-17.5-10.2 1.2-3.6-4.4-5.4-5.5-1.8z"/><path d="M370.3 855.2l7.2 6.6c1 .9 2.3 1.3 3.5.6 4-2 7.6-4.7 10.6-8.1 2.5-2.8-1.4-7.2-3.9-4.4-2.7 3-5.8 5.4-9.4 7.2 1.2.2 2.4.4 3.5.6l-7.2-6.6c-2.7-2.4-7.1 1.5-4.3 4.1zm-46.9-127.1c-4.8 3.9-11.7 2.5-17.3 1.9-6.4-.7-12.6-.6-18.9 1.3-12.6 3.7-23.3 12-33.4 20.1-1.5 1.2-1.1 3.6.4 4.6 5.8 4.2 11.7 8.5 17.5 12.7.3-1.8.6-3.5 1-5.3-11 2.1-21.3 6.4-30.4 12.8-3.5 2.5-8.2 5.1-8.7 9.8-.4 3.8 2.2 6.7 6 5.1 2.2-.9 2-4.9-.4-5.4-6.8-1.5-12.7 1.7-17.5 6.3-5.6 5.3-10.2 11.8-14.9 18-9.4 12.5-17.8 26.2-20.9 41.7-2.9 14.4-1.5 29.9 6.9 42.3 6.9 10.1 17.3 17 28.7 21 13.8 4.8 28.6 5.8 43 4.6 3.8-.3 2.5-6-1.3-5.7-21.3 1.8-46.8-1.8-61.9-18.4-19.5-21.5-9.9-52.5 4.4-73.8 4.5-6.7 9.5-13 14.6-19.3 3.9-4.8 9.9-12.6 17.1-11.1-.1-1.8-.3-3.6-.4-5.4 1.7 1.6 2.6 1.9 2.6.8 0-.2 0-.4.1-.5.3-.3.8-1 1.1-1.3 1.3-1.2 2.8-2.3 4.2-3.3 2.9-2.1 5.9-3.9 9-5.5 6.3-3.3 13.1-5.5 20.1-6.8 2.6-.5 2.9-3.9 1-5.3-5.8-4.2-11.7-8.5-17.5-12.7.1 1.5.2 3.1.4 4.6 10.3-8.3 21.4-17.1 34.7-19.7 11.5-2.2 24.9 4.5 34.9-3.5 2.7-2.7-1.3-7-4.2-4.6z"/><path d="M244.6 830.4c-3.7 12.8.1 27.2 10.4 35.8 5 4.2 11.1 6.8 17.5 7.7 3.4.5 6.8.4 10.1-.2 3.8-.6 7.4-2.4 11.2-2.3-.9-1.3-1.8-2.6-2.6-3.9-3.8 9.6-3.9 21.1-9.6 29.9-4.1 6.3-13.4 11.8-20.2 6.3-3-2.4-6.1 2.6-3.2 4.9 8.1 6.5 19.4 2.2 25.7-4.7 8.6-9.4 8.4-23.3 12.9-34.6.7-1.8-.8-3.8-2.6-3.9-6-.1-11.4 2.9-17.4 2.8-5.8-.1-11.4-1.9-16.2-5.2-9.7-6.8-13.7-19.6-10.4-30.8 1-3.5-4.6-5.4-5.6-1.8z"/><path d="M262.3 855.6c4.7-9.2 17.4-9.9 26.4-11.4l39.6-6.9c3.7-.7 2.5-6.4-1.3-5.7-14.5 2.5-29 5-43.4 7.5-9.6 1.7-21.3 3.7-26.2 13.3-1.7 3.4 3.2 6.6 4.9 3.2zm183.3-367c-12.4 13.4-23.6 29.1-27.9 47.2-2 8.5-2.8 17.9-.6 26.5 2 7.8 7.7 15.4 16.5 15.8 8.4.3 14.9-8 11.7-15.9-1.1-2.8-5.4-1.5-5.5 1.2-1.8 31 16.1 61.9 44.1 75.6 3.4 1.7 6.6-3.3 3.2-4.9-26.2-12.8-43-41.2-41.4-70.4-1.9.4-3.7.8-5.5 1.2 1.3 3.3-1.9 6.9-5.1 7.3-4.4.6-8.4-2.8-10.4-6.5-4.1-7.7-3.4-18.2-1.7-26.5 3.7-17.7 14.5-33.1 26.6-46.2 2.5-2.8-1.4-7.2-4-4.4zm165.9-9.5c9.3 14.8 18.1 30.8 23.7 47.4 2.7 8 4.6 17.1 2.1 25.4-1 3.4-2.9 8-7.1 5.3-3.4-2.1-3.9-6.9-4.4-10.5-1.8.7-3.7 1.3-5.5 2 13.4 30.1-7 60.7-23.9 84.4-2.2 3.1 2.7 6.3 4.9 3.2 18.3-25.7 38.7-58 24.2-90.3-1.4-3.2-6-1.2-5.5 2 .7 4.5 1.7 9.3 5 12.6 2.8 2.8 7.1 4.2 10.9 2.8 4.3-1.7 6.2-6.6 7.2-10.7 1.2-4.9 1.3-10 .7-15-1.3-10.7-6-21-10.5-30.7-4.9-10.5-10.5-20.8-16.7-30.6-1.9-3.2-7.1-.5-5.1 2.7zm-195.6-22.9c5.2-2.9 4.6-11.7-1.5-13.1-2.4-.5-4 1.1-3.8 3.4.7 8.8 3.7 17.2 8.6 24.6 1.4-1.3 2.8-2.5 4.2-3.8-1.5-1.1-3-2.2-4.4-3.4-1.7-1.3-3.6 0-4.4 1.5-10 21.2-17.1 43.5-21.3 66.5-.7 3.7 5.2 4 5.9.3 4.1-22.5 11.2-44.4 21-65-1.5.5-2.9 1-4.4 1.5 1.5 1.1 3 2.2 4.4 3.4 2.3 1.7 5.9-1.4 4.2-3.8-4.7-7-7.4-14.8-8.1-23.2-1.3 1.1-2.5 2.3-3.8 3.4.9.2 1.8 1.7.7 2.3-3.3 2.1-.6 7.3 2.7 5.4z"/><path d="M416.3 464.9c9.4 11.8 24.3 17.7 39.2 16.1 3.8-.4 2.5-6.1-1.3-5.7-12.8 1.4-25.6-4.3-33.6-14.3-2.3-3-6.7 1-4.3 3.9zm-10.4 19.9c-3.5 2.8-2.2 7.2.4 10.1 3.5 3.8 9.5 5.6 14.2 7.1 11 3.5 22.7 4.2 34.1 2.3 3.7-.6 2.5-6.3-1.3-5.7-8 1.3-16.3 1.2-24.2-.4-3.8-.8-7.5-1.9-11-3.3-.7-.3-9.9-4.3-8.2-5.7 2.9-2.4-1.1-6.8-4-4.4zm148-.3c11.8-1.3 23.5-3.7 34.9-7.2 5.5-1.7 11-3.7 16.4-5.9 5.3-2.2 10.4-5.1 16-6.7 3.6-1 2.4-6.8-1.3-5.7-5.3 1.5-10.2 4.2-15.2 6.3-5.6 2.4-11.3 4.5-17.1 6.3-11.4 3.5-23 5.9-34.9 7.2-3.8.4-2.5 6.2 1.2 5.7zm19.3 25.6c19.8-3.7 39.3-8.5 58.6-14.2 3.6-1.1 2.4-6.8-1.3-5.7-19.3 5.8-38.8 10.5-58.6 14.2-3.7.7-2.4 6.4 1.3 5.7zm-36.5-18.8c2.9 8.1 6 16.6 5.7 25.3-.1 1.9-.5 4.5.9 6 2.4 2.6 4.8-.2 5.8-2.4 1.6-3.4-4-5.2-5.6-1.8-.4.7 0 .5 1.3-.6.9.3 1.9.6 2.8.9.8.8.5 1.7.5.1 0-.9.1-1.9.1-2.8.1-2.1.1-4.2-.2-6.3-1.2-7.1-3.7-14.2-6.2-21-1.2-3.6-6.4-.9-5.1 2.6z"/><path d="M545.5 485c6 10.6 8.1 22.6 6.4 34.6-.5 3.7 5.3 4 5.9.3 1.9-13-.6-26.2-7-37.6-1.9-3.3-7.1-.7-5.3 2.7z"/><path d="M557.8 526.7c-5.1-5.5-13.6-6-20-2.3-7.2 4.2-10 12.5-6.8 20.2 3.4 8.2 12.2 13.5 21 12.2 8.7-1.3 16-8.5 18.4-16.8 1.3-4.7 1.3-9.9-3.2-12.8-3.8-2.4-9-2.1-13.3-1.4-3.7.6-2.5 6.4 1.3 5.7 2.7-.4 7.5-1.2 9.5 1.2 2.2 2.6-.9 8.5-2.5 10.8-4.3 6.2-12.6 10-19.6 5.9-5.8-3.4-10-11.8-5-17.5 3.8-4.4 11.5-5.8 15.7-1.3 2.7 2.8 7.1-1.1 4.5-3.9zm-78.2-59c-4.5 2.8-5.6 8.2-3.6 13 2.5 5.9 8.8 7.9 14.7 8.5 7.6.7 15.3.6 22.9.9 5.9.2 12.6 1.2 16.8-4 2.4-2.9-2.6-6.1-4.9-3.2-2.3 2.8-9.1 1.4-12.2 1.3-5.2-.2-10.3-.3-15.5-.5-4.4-.1-9.4.1-13.4-2-2.5-1.4-5.6-6.5-2.1-8.6 3.2-2.2.5-7.4-2.7-5.4z"/><path class="st3" d="M480 377.4c5 4.8 12.4 6.9 19.2 5.4 1.6-6.3-6.9-12.5-12.4-8.8"/><path d="M451.9 512.1c30.6 7.7 62.6 8.4 93.4 1.8 3.7-.8 2.4-6.5-1.3-5.7-29.8 6.4-60.8 5.9-90.3-1.6-3.7-1-5.5 4.6-1.8 5.5z"/></svg>
+ data/DragonTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0{fill:#f5cd62}.st0,.st1,.st3{opacity:.7}.st1{fill:#77a81d}.st3{fill:#403d36}</style><path class="st0" d="M319.6 248.7c-36.8 25.2-35.5 82.1-13.3 120.9s55.1 68.8 82.9 103.7c49.3 61.7 71.6 139.2 100.4 212.8 23.1 59 53.7 115.3 94.3 163.9 52.5-27.7 83.1-79 79.8-138.3-6-108-71.9-230-152.7-301.8-6.9-6.1-14.4-12.2-23.3-14.5-12.3-3.1-25 1.5-37.5 3.7-37.6 6.6-78.4-11.4-98.8-43.7 0 0-91.4 21.7-34.7-107.3"/><path class="st0" d="M630.6 548.1c-5 10-8.2 20.8-9.4 31.9-19.1-23.6-34.1-50.5-44.4-79.1-1.3-3.7-2.6-7.8-1.6-11.6 1.2-4.8-3.1-6.5.9-9.3 22.6-15.9 52.6-36.4 65.9-60.6 13.3-24.3 17.6-54.6 6.2-79.8 8.5-2.9 18.1-.7 25.7 4.1 7.6 4.7 13.6 11.7 19.1 18.8 19.9 25.7 35.8 54.6 46.6 85.2 1.7 4.8 3.2 10.4.7 14.9-5 8.9-19.8 4.5-27.5 11.2-6.7 5.9-4.5 16.6-2 25.1s4.2 19.4-2.8 24.8c-5.4 4.1-13 2.5-19.7 1.8-31.7-3.7-64.4 17.3-74.4 47.6m-463.3 31.4c8.4-16.6 28.4-23 46.6-27.2 11.8-2.7 24.1-5.1 35.9-2.5 11.8 2.7 23 11.7 24.3 23.8 9-20.4 33.9-32.4 55.5-26.7 14.6 3.8 29.1 14.7 43.4 9.6 8.4-3 14.1-11 16.5-19.5 2.4-8.5 2-17.6 1.3-26.4-1.3-17.5-5-37.4-19.9-46.7-12.8-7.9-29-5.2-44-4.6-43.9 1.7-87.3-20.2-114-54.7-3.9-5-11.8-25-16.8-27-9.9-3.9-13.2 19.4-15.1 25.5-7.8 26.5-13 53.7-15.5 81.2-3 31.8-2.4 63.7 1.8 95.2z"/><path class="st1" d="M564.8 291c-1.8-16.8-16.3-28.9-26.2-42.6-7.3-10.1-12.2-21.9-14.6-34.1 4-9.3 7.3-18.9 9.7-28.8-3.5-1-7.4-.5-10.7 1.2.3-2 .6-4.1 1-6.1 10.3-18.3 19.4-37.3 27-56.8-9.8 12.8-26.2 20.4-42.4 19.6-16.2-.7-31.8-9.8-40.4-23.4-7.6 5.2-12.5 14.2-12.4 23.4h-23.9c-4.8-15.9-9.7-31.9-14.6-47.8-1.7-5.7-5.3-12.7-11.3-12-4.6.5-7.1 5.5-8.6 9.8-6.9 19.9-8.9 41.4-5.7 62.2l-3.9-17.4c-6.5 10.2-15.8 18.7-26.6 24.3-6.2-13.2-18-23.6-31.9-28.3 8.6 23.8-5.5 47.7-30.4 52.7-10.2 2.1-59.2-7.8-44.5 12.6 23.3-5.2 40.5-6.3 57.6 11.8 4.2 4.4 7.3 10.3 9.6 16.9-1.2 2.3-2.1 4.3-2.7 5.6-11.2 24-9.4 52.4-11.3 78.2-.7 9.8-1.3 20.2 3 29 5 10.2 16.1 16.5 27.3 18.1 7.7 1.1 15.5.4 23.1-1.3 14.3 8.4 27.8 20.6 40.1 30.5 15.4 12.3 33.9 21.6 52.5 15.2 17-5.9 30-30 43.4-42 12.8-11.4 29.1-18.1 43.1-28.1 14.3-9.9 26.5-25.4 24.7-42.4zm83.1 94.6c1.6-4.3 2.7-8.8 3.3-13.3.2-.9.4-1.7.6-2.6 1.1-6.2.3-12.4-1.4-18.5-.6-3.1-1.5-6.1-2.5-9-3.2-9-8.5-17.8-7.6-27.3.5-5.4 11.2-31.3-1.1-30.8-3 .1-5.3 3.8-7.1 8.4-7.6 4-15.1 8-22.7 12 13.5 24.3 14 55.3 1.2 80-12.8 24.7-38.3 42.2-65.9 45.3L530 413.4l26.4 40.5c5.5 8.4 12.7 17.8 22.8 17.7 11.5-.1 26.7-17.8 32.5-27.8 5.8-10 8.5-14.9 18.8-9.9 3.5 1.7 6.4 5.1 10.3 5.3 6.5.4 10-8.1 8.4-14.5s-6-11.7-7.2-18c-.7-3.5-.4-6.9.3-10.2 2.2-3.4 4.1-7 5.6-10.9z"/><path d="M187.7 428.7c-19 21.8-24 54.7-12.5 81.2 10-21.4 21.6-42.1 34.5-61.9" fill="#77a81d"/><path class="st1" d="M563 811.5c-9.7-7.6-21.9-11.6-31.6-19.1-21.8-16.8-22.6-59.5-28.4-86-18.2-83.8-63.2-149.6-121.3-213.8l-.9-.9c-6.5-9.4-14.6-23.6-23.1-27.8-10.8-5.4-19.9 1.3-31.1 3.7-26.2 5.6-54.7.9-77.1-13.9-31.8-21.1-49.5-61.5-43.4-99.2 1-6 2.3-12.6-1.1-17.6-4-5.8-13-6.1-19.1-2.5-6.1 3.6-9.9 10-13.5 16 5.3 3.3 10.5 6.6 15.8 9.9-8.4 1.6-13.6 10.7-14.1 19.2s2.5 16.9 4.6 25.2c8.9 35 3.1 71.9-2.7 107.5 4.8-17.4 17.9-32.4 34.6-39.3 16.7-6.9 36.5-5.7 52.2 3.2-5.9 20.1-4.7 42.1 3.3 61.5 4.3-17.5 8.6-35.1 13-52.6 26.7 9.8 55.3 14.2 83.7 12.9.2.6.4 1.1.6 1.7 7.4 20.3 14.9 40.6 22.3 60.8-2.8 13.7-9.9 26.6-21.7 34.3-4.7 3-10.3 5.4-13.1 10.1-3.3 5.5-2 12.4-.5 18.6 2.5 10.2 5.3 20.4 8.4 30.5-16.1-18.1-43.8-26.3-68.4-21.9-31.7 5.7-58.1 27.8-78 53-10.2 12.9-27.9 23.1-26.3 39.4.8 7.6-.9 12 12.3 27.7 4 4.7-2 12.2-2.8 18.3-2.9 22.2 10.9 44.1 29.3 57.1s40.8 18.9 62.7 24.4c1.2-16.9 19.8-30.3 36.3-26.3.2 6.7.5 13.5.7 20.2 5.4-15.1 21.3-25.8 37.4-25.4-2.5 6.5 4.7 13.4 11.7 13.5 7 .1 13.3-4.2 19-8.3 5.4-3.9 10.8-7.8 16.3-11.8.7 2.5 1.4 4.9 2.1 7.3 6.4 5.5 17.3 3 22.4-3.7.6-.8 1.2-1.7 1.6-2.6 3.1 4.6 6.2 9.2 9.4 13.7-3.7 10.1-7.4 20.4-7.2 31.1s5.3 22 15.1 26.7c9.8 4.7 24.1-.1 26.4-10.5 19.3-2.7 37.3-13 49.1-28.1 15.2-1.5 30.4-3.1 45.5-4.7 6.2-10.2-.7-23.9-10.4-31.5zM380 506.3l-1-6.6 1.8 6.6h-.8zm4.9 32.1c.8 2.1 1.5 4.2 2.2 6.3 0 1.9 0 3.8-.1 5.7 0 .3-.1.7-.1 1l-2-13zm508 237.7c-.7-13.8-9.7-28.3-23.3-30.4-8.6-1.4-17.4 2.2-26 1.1-13.6-1.8-23.7-17.1-20-30.2s20.2-21 32.8-15.5c-9.5-9.6-19-19.1-28.4-28.7-2.4-2.5-5.4-5.1-8.8-4.5-3.7.7-5.6 4.7-7.5 8-7.3 12.7-23.8 19-37.9 15.2-14.2-3.8-25.1-16.7-27.4-31.2-2.3-14.5 3.9-29.7 14.9-39.4-1.8 1.6-32.5-3.9-37.8-3.4-10.1 1.1-23.7 3.2-32.3 9-1.7 1.1-3.1 2.4-4.2 3.8-4.7-15.8-11.1-31-19.6-45.4-3.6-6.1-7.7-12.1-13.7-15.8-5.3-3.3-12.5-4.2-17.8-1.2l.2-5.5c-2.8 3.5-4.4 7.3-5.3 11.3-.8 2-1 4.3-.6 6.4 0 13.3 7.1 28.1 13.4 40.7 24.4 48.8 23 100.9 15.9 155-8.8-7.7-13-2.4-20.5 6.5-19.2-3.3-39.4 12.5-40.9 31.8s15.9 38.1 35.3 38c15 3.8 31.1 3.5 46-.9 6.5 7.2 19.2 5.2 26-1.8s9.3-17 11.4-26.5c2.4-11.2 4.2-23.8-2.2-33.3s-24.3-10.3-27.2.8c7.2-32.3 11.1-66.1 9.5-99.3.9 1.9 2 3.7 3.4 5.3 6.7 6.9 17.8 5.6 27.3 4.8 30.3-2.4 63.2 7.9 81.1 32.6 17.6 24.2 17.6 57.8 7.5 86s-28.9 52.2-47.4 75.8c29.2 21 75.1 12.6 95-17.3 3.3-4.9 5.9-11.3 3.3-16.6-3-5.9-10.7-7.1-16.5-10-13.6-6.9-17.4-27.6-7.1-38.9s31.3-9.3 39.4 3.6c5.2-12.8 10.8-26.1 10-39.9z"/><path class="st0" d="M741 729.8c6.2 1.1 12.8 2.4 17.3 6.9 7.8 7.7 8.1 23.3 18.8 25.7 5.1 1.1 11.4-1.5 15.1 2.2 1.9 1.9 2.4 4.8 2.7 7.4 2.9 23.5 5.8 47.1 8.6 70.6 11.6-22.8 16.6-48.9 14.4-74.4-1.6-17.9-7.2-36.3-20.6-48.3-10.4-9.3-24.4-13.7-38-16.9-26.7-6.3-57.3-17.4-58.7 19.1 12.7 4 27.1 5.3 40.4 7.7z"/><path class="st3" d="M453.1 358.5c1.4-10.6 10.8-19.6 21.5-20.5 2.9 11.1-.4 23.6-8.2 31.9-3.4 3.6-8.8 6.5-13 4-3.4-2-4.3-6.7-3.1-10.5 1.2-3.7 4-6.7 6.7-9.6m-34.5 25.3c-5.5-1-11.1-2-16.1-4.6-5-2.6-9.3-7-10.3-12.5s2.2-11.9 7.6-13.2c7.1-1.7 13.5 5.4 15.3 12.5s.7 14.7 2.7 21.8M481 220.8c-5.2-4.3-14.5-.9-15.7 5.7 8.4 1.5 17 1.2 25.3-.7 2.1-.5 4.4-1.3 5.1-3.3 1-2.7-1.9-5.5-4.7-5.8-2.9-.3-5.6 1-8.4 1.8s-6.1 1-8.2-1m-121.1 10.4c-6.8-.9-13.9 3.1-16.6 9.4 9.6 1.6 20-2.9 25.5-10.9m394.1 450.4c10.2 8.6 25.8 9.1 37.4 2.5s19-19.3 20.6-32.5c6.6-54.2-104-8.8-58 30zm87 31.9c-8.5-.8-16.7 5.8-18.7 14.1s2 17.4 8.8 22.5 16.1 6.3 24.4 4.1 15.4-7.5 20.8-14.2c4.2-5.2 7.4-12 5.6-18.4-2.2-7.9-11.2-12-19.3-13.1-14.2-2-29.1 1.7-40.6 10.1m19.1 132.9c9 6.7 21.5 5.1 32.6 3.2 4.3-.8 8.8-1.6 11.9-4.7 15.3-15.1-10.4-46.9-28.8-42.9-18.6 4.1-34.5 30.4-15.7 44.4zm-552.9 9.5c3.6-2.8 4.5-7.8 6.6-11.8 2.1-4 7.4-7.5 11-4.7 1.7 1.3 2.3 3.5 2.8 5.5 2.5 12 .2 24.9-6.2 35.3-5.9-9.8-11.8-19.7-17.7-29.5m42.6 8.9c-.6-13.4 11.3-26.1 24.7-26.2 1 14.9-1.3 30-6.6 43.9-7.1-5.9-14.2-11.8-21.2-17.7"/><path d="M334.4 845.1c-6-1.5-12.8 3.9-12.5 10.1s7.4 11.1 13.2 9.1" fill="#403d36"/><path class="st3" d="M365.8 856.5c4.3-8.3 11.3-15.2 19.6-19.4 1.8 9 2.1 18.2 1.1 27.3-.3 2.5-.9 5.4-3.2 6.6-2.1 1.2-4.8.2-6.9-.9-7.1-3.8-12.7-10.4-15.3-18.1m79.2 40.4c-.8-1.8-3.1-2.8-5-2.2-1.8 12.5 3.8 25.7 14.1 33l13.8-24.3c-5.8 2-12.4 1.1-17.4-2.4-5-3.5-8.2-9.4-8.4-15.5m62.9 0c-.3 5.1-.6 10.4 1.5 15 2.1 4.7 7.3 8.3 12.2 6.8 5.6-1.7 7.4-8.6 8.4-14.4.9-5.3 1.4-11.7-2.7-15.1-3.6-3-9.3-2.2-13.1.7s-6 7.3-8 11.5m57.2-32c-3.5.8-5.3 5.1-4.7 8.7.6 3.6 3 6.5 5.3 9.4s4.7 5.8 5.3 9.3c8.1-6.3 15.3-13.7 21.3-22-8.1-9.9-25-10.7-34-1.6m82.1 5c1.9 7.5 10.6 12.5 18.1 10.5 7.5-2 12.4-10.7 10.3-18.2.3 1.2-45.2-4.3-48.2-1.4-12.3 11.6 13.8 25.5 19.8 9.1zm46.2-11.6c-2.8 7.9-3.2 16.7-1.1 24.9 10.6-1.2 20.3-7.9 25.2-17.3-8.2-2.4-16.5-4.7-24.7-7.1"/><path class="st3" d="M675.8 851.7c-2.7-2.2-7.5-.1-7.7 3.3l10.8 11.4c.8.9 1.7 1.8 2.8 2.2 3.2 1.2 6.4-2.6 6.2-6s-2.7-6.2-4.9-8.7"/><path d="M315.2 243.9c.5-14.7-5.3-28.9-16-39-3.8-3.6-9.5 2.1-5.7 5.7 9.2 8.8 14 20.6 13.6 33.3-.1 5.2 7.9 5.2 8.1 0z"/><path d="M221.8 171.7c16.7 3.5 15.8 24.1 14.8 37.3-.2 3 3.6 5.1 6.1 3.5 19.9-13 47.8-8.2 62.5 10.3 3.2 4.1 8.9-1.7 5.7-5.7-16.9-21.2-49.6-26.3-72.3-11.5 2 1.2 4.1 2.3 6.1 3.5 1.3-16.9-.1-40.7-20.8-45.1-5-1.2-7.1 6.6-2.1 7.7z"/><path d="M213.6 167.8c22 11.3 46.5 20.8 71.8 19 21.3-1.5 41.9-10.7 54.6-28.2 2.4-3.3-2.3-7.7-5.5-5.5-1.1.7-2.2 1.5-3.2 2.2-4.3 2.9-.2 9.9 4.1 7 1.1-.7 2.2-1.5 3.2-2.2l-5.5-5.5c-11.6 15.9-31.5 23.7-50.7 24.3-22.8.7-44.7-7.8-64.6-18.1-4.7-2.3-8.8 4.6-4.2 7z"/><path d="M333.5 168.4c-2.4-7.5-4.4-15-5.9-22.8-.8-4-1.8-8.4-1.8-12.5 0-3 2.1-4.9 4.4-1.9 1.1 1.4 2.1 2.9 3.1 4.3 8.6 12.2 15.8 25.4 21.5 39.3 1.9 4.8 9.8 2.7 7.8-2.1-4-9.9-8.6-19.5-14.1-28.6-2.7-4.6-5.6-9-8.7-13.3-2.4-3.4-5.1-8.4-9.4-9.8-3.6-1.2-7.6.5-9.9 3.3-2.9 3.4-2.9 8.1-2.4 12.3 1.3 11.6 4 23 7.6 34 1.6 4.9 9.4 2.8 7.8-2.2z"/><path d="M346.3 159.7c17.3-5.2 32.8-14.6 45.3-27.6 3.6-3.8-2.1-9.5-5.7-5.7-11.6 12-25.8 20.7-41.8 25.5-4.9 1.5-2.8 9.3 2.2 7.8z"/><path d="M391.4 149.9c-.3-14.4.4-28.8 2.5-43 1-7 2.3-13.9 3.8-20.8.8-3.4 1.6-6.9 2.5-10.3.4-1.5.9-3.1 1.3-4.6.7-3-.3-1.7 1.4-1 4.7 2.1 8.2 9.5 10.3 13.8 2.8 5.8 4.8 11.9 7 17.9 4.8 13.3 9.1 26.7 13.5 40.1 1.6 4.9 9.4 2.8 7.8-2.1-5.3-16.5-10.6-32.9-16.8-49.2-2.3-6-4.6-12.1-8.2-17.4-3-4.6-8.1-11.1-13.8-12.2-7.7-1.5-9 8.1-10.4 13.5-2.1 8.1-3.9 16.2-5.2 24.4-2.8 16.8-4 33.8-3.6 50.8-.1 5.3 8 5.3 7.9.1z"/><path d="M430.7 137.5c11.1 2.7 22.5 4.1 34 4 5.2 0 5.2-8.1 0-8.1-10.8.1-21.3-1.1-31.8-3.7-5.1-1.2-7.3 6.6-2.2 7.8z"/><path d="M464.4 139.4c-.6-5.1-.6-10.3.6-15.3.6-2.6 3.3-13.8 7-13 1.5.3 3.9 5.2 4.8 6.4 1.8 2.5 3.5 4.9 5.3 7.4l11.1 15.6c3 4.2 10 .2 7-4.1-5.5-7.7-10.9-15.3-16.4-23-3.3-4.7-7.5-12.5-14.5-10.9-6 1.3-8.9 9.6-10.7 14.7-2.5 7.1-3.2 14.8-2.3 22.2.6 5.1 8.7 5.1 8.1 0z"/><path d="M489.3 145.5c28-9.3 56.5-19.1 79.2-38.8 3-2.7-.2-8-3.9-6.8-1.3.4-2.7.9-4 1.3-4.9 1.6-2.8 9.4 2.2 7.8 1.3-.4 2.7-.9 4-1.3-1.3-2.2-2.6-4.5-3.9-6.8-21.5 18.7-49 27.9-75.6 36.8-5.1 1.6-2.9 9.4 2 7.8z"/><path d="M558.6 105.9c2.5 14-3.9 28.3-10.3 40.4-6.2 11.6-14 22.3-23.1 31.8l5.7 5.7c1.6-2 4.2-1.6 5.7.4s1.2 5.1.7 7.3c-1.2 4.9-4.4 9.2-6.3 13.8-3.5 8.5-4.2 18.2.7 26.3 2.7 4.4 9.7.4 7-4.1-8.5-13.9 6.8-25.1 7.2-38.5.2-5.5-2.2-11.1-7.3-13.5-4.5-2.1-10-1.3-13.2 2.6-3.2 3.9 2 9.6 5.7 5.7 10.4-10.8 19.2-23.1 26-36.5 6.8-13.5 12.3-28.3 9.6-43.6-1.3-5-9.1-2.9-8.1 2.2zM311 235.6c-4.7 16.7-8.7 33.6-12 50.7-3.3 16.9-7.2 34.7-6 52 .4 6.3.9 14.4 6.9 18 3.2 1.9 7.2 2.6 10.7 3.6 4.1 1.2 8.3 2.4 12.4 3.6 17.5 5 35.1 10 52.6 15.1 5 1.4 7.1-6.4 2.1-7.8-15.3-4.4-30.6-8.8-45.9-13.1-7.6-2.2-15.3-4.4-23-6.6-4.3-1.2-6.4-2.3-7.2-7.1-.8-4.4-.9-9-.8-13.4.3-15.7 3.7-31.5 6.8-46.8 3.1-15.5 6.9-30.8 11.1-45.9 1.5-5.2-6.3-7.3-7.7-2.3z"/><path d="M414.4 325.8c-17.3 6.7-38.7 16.6-40 38-1.1 19.1 18.3 33.3 33.1 41.5 17.1 9.5 38 16.3 56.4 6.5 8.6-4.6 16.1-11.6 22.7-18.8 6.9-7.6 13.5-16.1 17.8-25.5 9-19.6 4.3-42.3-14.8-53.8-4.5-2.7-8.5 4.3-4.1 7 14.4 8.7 18.8 25.7 12.7 40.9-6 15-18.6 29.2-31.5 38.8-6.5 4.8-13.9 8.5-22.2 8.4-8.4-.1-17-3.1-24.6-6.4-13.3-5.8-30.3-15.6-36-29.8-8.4-21.1 17.3-33.1 32.6-39.1 4.9-1.8 2.8-9.6-2.1-7.7z"/><path d="M427 369.2c.1-8.8-2.7-18.3-11.2-22.5-6.8-3.3-15.3-1.9-19.3 4.9-3.5 5.9-2.9 14 .7 19.7 5 8 14.5 11.5 23 14.4 4.9 1.7 7-6.1 2.1-7.8-8.4-2.9-21.8-7.7-20-19 .7-4.7 4.8-7 9.2-5.3 6.1 2.5 7.4 9.7 7.3 15.5.1 5.3 8.2 5.3 8.2.1zm25.4-4.5c-.9-7 3.1-12.2 8.1-16.7 3.9-3.5 12-10.6 14-2 2.7 11.6-6 23.8-16.8 27.3-4.9 1.6-2.8 9.4 2.1 7.8 8.7-2.8 15.9-9 19.8-17.2 3.6-7.6 5.2-18.1.3-25.5-6-9-15.7-3.6-22.2 1.6-7.6 6-14.7 14.4-13.3 24.8.6 5 8.7 5 8-.1zm76.2-141.3l-8.4-6c-1.4 2.3-2.7 4.6-4.1 7 25.9 15.6 55.7 38.4 54 72.2-1.7 34.3-37.6 51.6-64.5 64-4.7 2.2-.6 9.1 4.1 7 30.1-13.9 66.7-33.3 68.5-71 1.8-36.8-29.6-62.2-58-79.2-4.5-2.7-8.2 4-4.1 7l8.4 6c4.3 3.1 8.3-3.9 4.1-7zM364 267c-9.1 4.6-9 17.9-5.8 26.3 3.3 8.7 15.9 14.1 21.5 4.2 4.8-8.4 5.9-23.3-1.5-30.6-6.2-6.1-17.3-6.4-22.1 1.4-2.7 4.5 4.3 8.5 7 4.1 2.3-3.8 8.1-1.7 10.2 1.2 3.4 4.6 1.9 12.1.3 17.1-2.3 7.6-7.7 2-8.7-3.1-.9-4.3-1.5-11.3 3.1-13.6 4.7-2.4.6-9.4-4-7z"/><path d="M363.6 266.8c-4.6 1.4-9.1 1.8-13.8 1.3-5.2-.5-5.1 7.6 0 8.1 5.4.5 10.8-.1 16-1.6 4.9-1.5 2.8-9.3-2.2-7.8zm126.7-13.5c-10.6 3-14.7 13.8-14.3 24 .2 4.5.1 11 3 14.7 2.7 3.5 7.2 3.9 11.2 2.5 8.3-2.8 12.4-12.3 12.7-20.5.4-9.2-3.9-17.9-11.3-23.3-4.2-3-8.3 4-4.1 7 7.8 5.6 10 18.3 4 26.1-.8 1-4.2 4.5-5.9 3.3-1.9-1.3-1.5-8.8-1.5-10.8-.1-6.2 1.7-13.4 8.4-15.2 5-1.3 2.9-9.2-2.2-7.8z"/><path d="M489.1 265.2c7 2.5 14.4 2.7 21.5.9 5-1.3 2.9-9.1-2.1-7.8-5.9 1.5-11.5 1.1-17.2-.9-5-1.7-7.1 6.1-2.2 7.8zm-142.7-29.4c3.6-6 10.8-7.9 17.1-5.2-.8-2-1.6-4-2.4-5.9-3.4 4.5-8.1 7.4-13.6 8.9-5 1.4-2.9 9.2 2.1 7.8 7.6-2.1 13.7-6.4 18.4-12.6 1.8-2.3-.3-5.1-2.4-5.9-9.6-4-20.9.2-26.2 9-2.7 4.2 4.3 8.3 7 3.9zm137.9-12.7c-4.4 1-8.7 1.7-13.2 1.8-1.5.1-3.9-.3-5.4 0 .4 1.9.9 2 1.5.3.4-.5 1-1 1.5-1.4 5-3.7 12.3-3.1 18.2-2.8 5.2.3 5.2-7.8 0-8.1-9.3-.5-23.8-.2-27.9 10.2-5.7 14.6 21 9.1 27.4 7.6 5.1-.9 3-8.7-2.1-7.6zm-181.7 15.6c-7.7 13.5-14.3 27.6-19.7 42.1-5.4 14.7-10.3 30.2-11.5 45.9-2.5 30.4 16.4 54 34.3 76.4 35 44 74.8 84.4 106.1 131.3 17.3 25.9 31.7 53.7 40.4 83.8 1.4 5 9.2 2.9 7.8-2.2-15-52-46.5-96.5-80.6-137.8-17.4-21.1-35.6-41.6-53.1-62.6-9-10.7-17.8-21.6-26.2-32.8-8.5-11.4-16.6-23.7-19.6-37.8-3.8-17.8 1.8-36.6 7.3-53.4 5.6-17 13-33.3 21.9-48.8 2.5-4.6-4.5-8.7-7.1-4.1zm193.9 138.8c29.1 41.4 58.2 82.8 87.2 124.2 26.4 37.6 53 76 65.7 120.7 7.4 26 10.4 53 9 80-.3 5.2 7.8 5.2 8.1 0 2.3-47.5-9-94-31.4-135.8-11.2-20.9-24.6-40.6-38.2-60.1-14.3-20.5-28.7-40.8-43-61.3-16.8-24-33.7-47.9-50.5-71.9-2.9-4.1-9.9-.1-6.9 4.2z"/><path d="M537.7 430.3c10.3 11.1 27.2-3.7 35.8-10 12-8.7 23.3-18.3 32.1-30.3 18.2-24.9 19.3-59.1 1.4-84.5-.2 1.6-.4 3.3-.6 4.9 12.8-10.9 27.1-19.7 42.5-26.4-2-1.2-4-2.3-6.1-3.5 1.8 16.7 1.7 33.6-.7 50.3-.7 5.1 7.1 7.3 7.8 2.1 2.5-17.4 2.8-34.9 1-52.4-.3-3.2-3.1-4.8-6.1-3.5-16.1 6.9-30.9 16.2-44.2 27.6-1.3 1.1-1.6 3.5-.6 4.9 15.3 21.8 15.7 50.3 1.2 72.6-7 10.8-16.7 19.6-26.8 27.4-4.8 3.7-9.8 7.2-14.8 10.5-3.8 2.6-12 9.1-16.3 4.5-3.5-3.8-9.2 2-5.6 5.8z"/><path d="M576.4 472.8c22.2-5 41.3-19.6 51.9-39.8-1.8.5-3.7 1-5.5 1.5 4.8 2.3 9.5 4.6 14.3 6.9 3.7 1.8 7.8 4.5 12 4.8 6.5.5 10.6-4.5 11.6-10.4 2.5-14.4-9.4-30-19.8-38.5-1.3 2.2-2.6 4.5-3.9 6.8 8.7 1.4 14.4-5.8 18.5-12.5 4.3-7 6.8-14.9 7.8-23 2-16.3-3-32.9-14-45.2-3.5-3.9-9.2 1.9-5.7 5.7 8.3 9.3 12.3 21.5 12 33.8-.1 5.9-1.3 11.9-3.5 17.4-1.6 4.1-7.4 16.8-13 15.9-3.5-.5-7.5 3.9-3.9 6.8 8.1 6.5 15.8 16.1 17.6 26.6.3 2 .5 4.4-.3 6.3-1.4 3.3-4 1.9-6.8.6-6.3-2.9-12.5-6-18.7-9-1.9-.9-4.5-.6-5.5 1.5-9.7 18.4-26.8 31.5-47.1 36-5.3 1.1-3.1 8.9 2 7.8z"/><path d="M646.6 327.8c17.5.5 32.8 10.2 45 22.1 12.7 12.2 23.2 26.8 31.6 42.2 8.3 15.4 14.5 31.8 18.3 48.9.9 4.1 1.7 8.2 2.3 12.3.4 2.4.7 4.8.9 7.2.3 3.2.2 4.1-3.1 4.2-2.3.1-5.3-1.1-7.5-1.5l-7.5-1.5c-5-1-10.1-2-15.1-3.1-3.5-.7-6.3 2.7-4.6 5.9 10.8 20.1 15 43.3 11.6 65.9 1.7-.9 3.3-1.9 5-2.8-36.3-13.8-79.6-.2-102.2 31.2-3 4.2 4 8.3 7 4.1 20.5-28.6 60.3-40 93-27.5 1.9.7 4.7-.8 5-2.8 3.8-24.9-.4-50-12.4-72.2-1.5 2-3 4-4.6 5.9 9.4 1.9 18.9 3.9 28.3 5.8 5.9 1.2 13.3 1.8 15.2-5.5.8-3.3 0-7-.5-10.3-.5-4-1.1-7.9-1.9-11.8-1.6-8.2-3.7-16.3-6.3-24.2-9.9-29.9-27.2-59.1-51.1-80.1-13.1-11.5-28.8-20.1-46.5-20.6-5.1 0-5.1 8 .1 8.2zm-294 124.9c-12.3 9-27.8 10.2-42.6 9.4-14.1-.8-28.1-3.9-41.1-9.3-25.9-10.9-46.8-31.9-54-59.4-3.9-15-3.4-30.6 2.2-45.1 1.9-4.9-5.9-7-7.8-2.1-10.8 27.9-3.5 59.9 14.6 83 19.3 24.6 50.1 37.7 80.6 40.6 17.7 1.7 37.4.8 52.2-10 4.1-3.2.1-10.2-4.1-7.1z"/><path d="M217.4 349.8c-1-8.6-5.1-17.3-13.2-21.2-9.5-4.5-19.4.1-27.1 6-4.3 3.2-8.3 6.8-12.2 10.5-2.7 2.6-7.4 5.9-7.2 10.2.2 4.7 4.7 6.3 8.4 7.6 6 2 12.1 3.9 18.1 5.8v-7.8c-12.3 3.3-19.7 14.9-22.3 26.8-1.4 6.2-1.8 12.2 4 16.2 6.1 4.2 13.9 5.8 21.2 5.1 5.1-.4 5.2-8.5 0-8.1-5.4.4-10.6-.3-15.3-2.9-4.4-2.5-2.3-8.2-1-12.2 2.5-7.7 7.4-14.9 15.6-17.1 4-1.1 3.7-6.6 0-7.8-3.6-1.2-7.3-2.3-10.9-3.5-1.3-.4-9-2.1-9.2-2.6 0 0 5.2-4.9 6.3-5.9 2.6-2.4 5.3-4.8 8.1-7 4.9-3.9 11.8-8.8 18.5-6.8 6.1 1.9 9.5 8.6 10.2 14.6.5 5.2 8.6 5.3 8 .1zM182.2 417c-14.4 34.5-25.1 73.8-10.1 109.9 1.5 3.5 6.5 4.1 7.8 0 6.1-19.9 17.4-37.6 32.7-51.7 3.8-3.5-1.9-9.2-5.7-5.7-16.3 15-28.2 34.1-34.8 55.3h7.8c-14.5-35-3.8-72.4 10.1-105.6 2-4.9-5.9-7-7.8-2.2z"/><path d="M207.1 468.2c18.2 7.6 37.6 11.4 57.4 11.5-.4-2.6-.7-5.3-1.1-7.9-16 3.9-13.7 22.9-12.1 35.2 1.1 8.2 2.4 16.3 4.1 24.4 1.3 6.1 2.6 12.2 9 14.6 2 .7 4.5-.8 5-2.8 4-17.8 10-35 18.1-51.4-1.5.6-3 1.2-4.6 1.9 26 7.5 53.2 10.5 80.2 8.8 5.2-.3 5.2-8.4 0-8.1-26.4 1.6-52.7-1.2-78.1-8.5-1.6-.5-3.8.3-4.6 1.9-8.4 17-14.8 34.8-18.9 53.3 1.7-.9 3.3-1.9 5-2.8-3.4-1.2-3.8-11-4.3-13.8-1.1-5.5-2-11-2.8-16.5-1.1-8.1-5.2-25.6 6-28.3 4.5-1.1 3.5-7.9-1.1-7.9-19.1 0-37.6-3.8-55.2-11.2-4.7-2.2-6.8 5.6-2 7.6zm-46.3-62.5c-16.2 26-24.1 56-27 86.3-3.2 33.1-1.5 67.5 2 100.5 1.4 13.4 4.7 27.5 15.8 36.2 2.6 2.1 6.9.9 6.9-2.9.1-24.2 9.6-47.5 26.5-64.8 3.6-3.7-2.1-9.4-5.7-5.7-18.4 18.8-28.8 44.2-28.9 70.5 2.3-1 4.6-1.9 6.9-2.9-12.7-10-13.3-27.5-14.3-42.4-1.4-20.4-2.7-40.8-2.5-61.2.5-38.1 6.8-76.8 27.3-109.6 2.8-4.4-4.2-8.5-7-4z"/><path d="M156.6 610.2c22.1-21.9 55.5-29.9 85.1-20.5l-3-3.9c-1.1 12.1 6.1 22.9 17.2 27.4 1.5.6 3.9-.4 4.6-1.9 3-6.6 6.1-13.7 11.4-18.7 7.1-6.8 16.2-5.5 25.2-4.5 19.9 2.1 39.6 5.2 59.2 9 5.1 1 7.3-6.8 2.1-7.8-22.2-4.3-44.6-7.9-67.1-9.8-9-.8-17.2.5-24.2 6.5-6.4 5.6-10.3 13.7-13.7 21.3 1.5-.6 3-1.2 4.6-1.9-7.8-3.2-12-11.4-11.2-19.6.2-1.8-1.4-3.4-3-3.9-32.3-10.2-68.9-1.3-93 22.6-3.6 3.6 2.1 9.3 5.8 5.7z"/><path d="M371.2 526.9c10 24.4 5.5 53.4-12.3 73.1-3.5 3.9 1.9 9.2 5.7 5.7.9-.8 1.9-1.7 2.8-2.5 3.9-3.5-1.9-9.2-5.7-5.7-.9.8-1.9 1.7-2.8 2.5l5.7 5.7c19.5-21.7 25.5-53.9 14.4-81-1.9-4.7-9.8-2.6-7.8 2.2z"/><path d="M374.2 604.3c-7.2-4.6-17.1-10.4-25.9-10.7-7.5-.3-10.6 6.5-10.1 13.1.6 9.2 3 18.6 4.8 27.7 2 9.4 4.2 18.7 6.7 27.9 10.2 37.2 25 73.2 43.8 106.9 10.8 19.2 22.9 37.7 36.2 55.2 3.1 4.1 10.1.1 7-4.1-41.7-55-71.1-118.8-85.5-186.3-1.9-9-4.6-18.6-5-27.9-.1-2.2-.3-4.2 2.5-4.3 2-.1 4.6 1.3 6.5 2 5.3 1.9 10.2 4.5 14.9 7.5 4.4 2.8 8.4-4.2 4.1-7zm76.8 57.3c-4.1 5.2-1.2 10.7.8 16.2 2.4 6.7 4.9 13.3 7.4 20 5 13.1 10.3 26.1 16.4 38.7 12.1 25 27.4 48.7 48.2 67.3 3.9 3.5 9.6-2.2 5.7-5.7-18.9-17-33.1-38-44.4-60.6-5.7-11.4-10.8-23.1-15.5-35-2.3-5.8-4.5-11.7-6.7-17.6-1.1-3.1-2.2-6.1-3.4-9.2-.4-1.1-3.5-7.6-2.9-8.4 3.3-4-2.3-9.8-5.6-5.7zm13.1-162.1c18.9-4.6 38.4-11.2 55.4-20.9 6.3-3.7 12-9.3 11.9-17.1-.1-8.2-6.8-12.5-14.4-12.8-5.2-.2-5.2 7.9 0 8.1 9.9.3 5.9 10 .4 13.6-5 3.4-10.9 5.8-16.5 8.2-12.6 5.5-25.6 9.8-39 13.1-5 1.2-2.9 9 2.2 7.8zm19.4 105.7c13.2 9.2 28.4 15.7 44.3 18.1 7.7 1.2 15.2 1 22.2-2.6 6.6-3.4 12.1-9.1 17-14.6 10-11.2 17.6-24.5 22.2-38.8 1.9-5.8 5.4-14.6 1.8-20.5-2.7-4.5-9.4-5.6-12.9-1.6-3.4 3.9 2.3 9.6 5.7 5.7.1-.1.4 2.7.3 3.5-.1 1.4-.6 2.9-.9 4.3-.7 2.7-1.5 5.3-2.3 7.9-1.8 5.4-4.2 10.6-6.9 15.6-5.3 9.6-12.1 18.3-20.2 25.7-4.5 4.1-9.5 7.5-15.7 8-6.2.5-12.5-1-18.4-2.6-11.5-3.1-22.2-8.3-32-15.1-4.3-2.9-8.4 4.1-4.2 7zm31.1 122.9c16.2 19.8 42.6 30.4 68 27.1 25-3.2 47.6-20.2 58.1-43.1 2.1-4.5 6.6-12.7 3.7-17.6-3.1-5.1-10.2-3.2-14.1-.3-4.2 3-.1 10 4.1 7 .5-.3 3.5-1.9 3-2.1-.6-.2-.9 1.9-1.3 3.1-1 3.2-2.4 6.2-3.9 9.1-2.8 5.3-6.3 10.3-10.4 14.7-8.7 9.4-19.8 16.4-32.2 19.7-25.3 6.7-52.8-3.2-69.2-23.3-3.3-4.1-9 1.7-5.8 5.7zM640.2 584v-13c0-1.4-.6-4.5 0-5.7-.1.2 0-1 .1-1 .8-.3 3.4 2.1 4.1 2.7 5.3 4.3 10.2 9.2 14.5 14.5 9.4 11.2 16.8 24.2 22.1 37.7 11.8 29.8 14.1 62 12.7 93.8-.9 20.2-3.3 40.3-5.7 60.3-.6 5.2 7.5 5.1 8.1 0 8.3-69.4 15.6-152.8-39.5-206.2-4.7-4.5-12.6-13.5-20-10.2-3.6 1.7-4.4 5.5-4.5 9.1-.2 6 0 12.1 0 18.1.1 5.1 8.1 5.1 8.1-.1zM437.6 876.7c-2.1-10.4-2.5-21.7.1-32.1 2-8.2 10.2-19.6 19.5-12.3 6.7 5.3 10.4 16 12.8 23.8 3 9.9 3.7 20-.3 29.6-2 4.8 5.8 6.9 7.8 2.2 5.3-12.6 3.3-26.5-1.4-38.9-3.6-9.6-8.8-22.4-19.4-26-11-3.8-21.1 4.6-25.1 14.3-5.2 12.9-4.4 28.3-1.8 41.7 1.1 5 8.8 2.8 7.8-2.3zm47.4-39.8c2.8-4.7 7.6-12.9 14.1-12 3.8.5 6.6 4.4 9.1 7.1 2.7 2.9 5.3 5.8 8 8.8s5.3 5.8 8 8.8c1.3 1.4 2.8 2.8 4 4.4 1.7 2.2 1.9 2.1 1 4.3-1 2.6-4.6 5.8-6.7 7.6-3.6 3-7.7 4.4-12.2 2.8-4.9-1.8-7 6-2.1 7.8 10.7 4 19.9-3.6 26.1-11.6 2.8-3.6 5.7-7.5 3.4-12.1-2.6-5.2-8.4-9.7-12.3-14-4.4-4.8-8.7-9.7-13.2-14.4-3.4-3.6-7.3-7-12.4-7.4-10-.9-17.1 8.4-21.6 16-2.9 4.3 4.1 8.3 6.8 3.9z"/><path d="M516.3 821.2c-1.3-8.6 7-14.9 14.8-15.4 8-.6 15.5 3.1 21.8 7.6 10.8 7.7 26.6 19.9 24.9 34.8 2-1.2 4-2.3 6.1-3.5-1.3-1-2.6-2-4-3-4.2-3.1-8.2 3.9-4.1 7 1.3 1 2.6 2 4 3 2.7 2.1 5.8-.8 6.1-3.5 1.1-9.9-4-18.6-10.5-25.7-7.2-8-16.4-16-26.1-20.7-8.9-4.3-19.8-6-28.9-1.4-8.6 4.4-13.3 13.4-11.9 22.9.7 5.2 8.5 3 7.8-2.1z"/><path d="M550.6 861.4c5.3-8 16.4-10.5 24.6-5.7 4.5 2.6 8.6-4.4 4.1-7-12.2-7-28-3.1-35.7 8.6-2.8 4.4 4.2 8.4 7 4.1zM350.9 647.5c-4.2-13.4-15.4-22.7-28.6-26.9-15.4-4.9-31.6-1.7-46.1 4.6-15.6 6.8-30 16.7-43.5 27C220 662 208 672.9 198 685.4c-11.1 13.8-19.7 29.4-24.3 46.6-1.4 5 6.4 7.2 7.8 2.2 7.6-27.7 25.9-50.4 47.5-68.6 11.1-9.4 23.2-17.8 35.8-25.3 13.3-7.8 28.3-14.8 44.1-13.9 14.5.8 29.6 8.9 34.2 23.3 1.6 4.8 9.4 2.7 7.8-2.2z"/><path d="M170.2 729.8c2.1 13.3 10.8 25.4 19.6 35.3 8.8 9.8 19.2 17.9 30.2 25.1 11.3 7.4 23.3 13.8 35.4 19.9 10.8 5.5 25.9 13.3 35.8 1.7 3.4-3.9-2.3-9.7-5.7-5.7-4.9 5.8-12.5 3.6-18.5.8-5.4-2.5-10.7-5.4-16-8.1-10.1-5.3-20.1-10.9-29.6-17.3-18.1-12.3-39.7-31-43.4-53.8-.8-5.1-8.6-3-7.8 2.1z"/><path d="M293.7 820.7c1.3-6.6 2.5-13.6 6.3-19.3 3.3-5 10.1-9.3 16.1-6.6 5.8 2.7 9.3 10.4 11 16.2 2 6.5 2.2 13.4.7 20-1.1 5.1 6.7 7.2 7.8 2.2 1.9-8.8 1.6-18-1.5-26.6-2.8-7.8-7.8-16.7-16.1-19.7-7.6-2.7-16.1.6-21.6 6.1-6.7 6.8-8.8 16.6-10.6 25.6-.9 5 6.9 7.2 7.9 2.1z"/><path d="M328.9 807.3c2.7-16.7 24.6-22.2 33.6-7 8.5 14.5 4.4 35.7-3.1 49.7-2.4 4.6 4.5 8.7 7 4.1 5.5-10.3 8.6-21.7 8.5-33.4 0-10.5-2.1-22.5-9.9-30.2-15-14.7-40.6-5.7-43.9 14.7-.8 5 7 7.2 7.8 2.1z"/><path d="M371.6 801.5c1.3-7.2 8.8-10.3 15.5-8.7 7.1 1.8 13.1 7.8 16.8 13.9 9.1 15-5.5 25.3-17.2 32-4.5 2.6-.5 9.6 4.1 7 8.2-4.7 17.2-10.3 21.7-19 4.9-9.5 2.1-19.5-4.1-27.6-6-7.8-14.8-14.9-25.2-14.8-8.9.1-17.7 6-19.4 15.1-1 5.1 6.8 7.3 7.8 2.1zm-77.1 53c-.1-.1 15.1-17.2 16.3-18.6-1.6.2-3.3.4-4.9.6 14 8.1 1.6 34.8-3.6 44.5-2.5 4.6 4.5 8.7 7 4.1 7.7-14.3 19.8-44.5.7-55.5-1.5-.9-3.7-.7-4.9.6-5.2 5.9-10.9 11.6-15.8 17.8-2.8 3.5-4.7 9-.5 12.3 4 3.1 9.8-2.6 5.7-5.8z"/><path d="M289 868.5c5.1 5.1 9 11 12 17.6 2.1 4.8 9 .6 7-4.1-3.2-7.2-7.7-13.7-13.2-19.3-3.7-3.6-9.4 2.1-5.8 5.8zm44.5-17.2c4.6-4.9 9.8-9.1 15.7-12.3 2.1-1.2 6.7-4.8 7.1-1.2.4 3.4-1.3 7.8-2 11.2-1.6 7.2-3.6 14.4-6.3 21.3-1 2.6-1 1.6-2.6-.4-1-1.2-2.1-2.4-3.2-3.6-2.8-3.1-5.5-6.3-8.3-9.4-.9-1-2.7-1.5-3.9-1-5.9 2.5-6.1 12.7 1.5 12.7s7.4-10.2 1.5-12.7c-4.8-2-6.9 5.8-2.1 7.8h1.4c-1.3-.3-2.6-.7-3.9-1 4.1 4.6 8 9.9 12.6 14.1 3 2.7 7.5 4.8 11.2 2.1 3.8-2.7 4.9-9.2 6.3-13.4 2-6.2 3.6-12.5 4.8-18.8.8-4.4 2.4-9.8.6-14.2-1.7-3.9-5.7-5.3-9.6-4.3-9.8 2.4-19.4 10.4-26.2 17.5-3.8 3.6 1.9 9.4 5.4 5.6zm41.9-1.4l17.1-15.6c-2.3-1-4.6-1.9-6.9-2.9.2 10.7.8 21.4.6 32.1-.1 4.7-3 7.2-7.7 5.4-4.4-1.7-7-6.6-9.3-10.4-2.6-4.5-9.6-.4-7 4.1 5.3 9 16.2 20.9 27.4 12.3 5.4-4.1 4.6-11 4.5-17-.2-8.8-.3-17.6-.5-26.4-.1-3.6-4.3-5.2-6.9-2.9l-17.1 15.6c-3.8 3.5 1.9 9.2 5.8 5.7z"/><path d="M185.8 754.4c-.8 2.7-4.5 3.7-6.7 5-2.1 1.3-4.2 2.8-5.5 4.9-3.8 6.1-.4 14.6 1.5 20.8 4.8 15.2 12.6 29.4 22.8 41.6 21.3 25.4 53.1 40.3 86.1 41.7 5.2.2 5.2-7.9 0-8.1-30.4-1.3-59.4-15-79.4-38.1-9.5-11-16.8-23.9-21.3-37.7-1.1-3.5-2.3-7.2-3-10.8-.6-3.5-.2-5.4 2.8-7.3 4.4-2.7 8.9-4.5 10.4-9.9 1.5-4.9-6.3-7.1-7.7-2.1z"/><path d="M283 824.5c-8.8 20.5 3.3 39.5 15.5 55.5 3.1 4.1 10.1.1 7-4.1-9.9-13-22.9-30.1-15.5-47.4 2-4.7-5-8.8-7-4zm159.2 67.9c5.2 0 5.2-8.1 0-8.1s-5.2 8.1 0 8.1z"/><path d="M439.1 889.2c5 18.1 30.1 18.1 35.3.2 1.5-5-6.3-7.1-7.8-2.2-3 10.3-16.9 10.1-19.8-.2-1.3-4.9-9-2.8-7.7 2.2z"/><path d="M429.8 895.8c2.1 6.7 4.8 13.2 8.3 19.3 2.6 4.6 5.9 11.3 11.9 11.7 5.6.3 9.3-4.9 12.2-8.9 4-5.5 6.9-11.6 9.2-18 1.7-4.9-6.1-7-7.8-2.2a60.6 60.6 0 0 1-6 12.6c-1.4 2.2-4.7 8.7-7.6 8.2-2.1-.4-5.6-8.7-6.6-10.7-2.4-4.5-4.2-9.3-5.8-14.2-1.6-4.9-9.4-2.8-7.8 2.2zm64.3-4c3.3 5.9 7.2 13.1 12.4 17.7 4.5 3.9 9.7 2.2 13.6-1.5 8.8-8.2 11.8-21.4 8.3-32.7-1.5-5-9.3-2.8-7.8 2.2 2.2 7.2 1.3 15-3 21.2-.8 1.2-2.3 3.5-3.7 4.1-3 1.2-4.1-1.8-5.5-3.7-2.7-3.6-5-7.4-7.2-11.4-2.7-4.5-9.7-.4-7.1 4.1zm51.2-30c4.5 8.6 8.9 17.3 13.4 25.9 1 1.8 3.8 2.6 5.5 1.5 11.8-8 20.6-19 25.9-32.3 1.9-4.8-5.9-6.9-7.8-2.2-4.5 11.2-12.2 20.7-22.2 27.5 1.8.5 3.7 1 5.5 1.5-4.5-8.6-8.9-17.3-13.4-25.9-2.3-4.7-9.3-.6-6.9 4zm98-75.6c-3.5-9.3-13.2-13.2-22.6-11.6-11.8 2-18.7 13-22 23.6-3.9 12.4-6 27.4-.4 39.5 5 10.9 15.8 17.7 27.5 18.9 5.2.5 5.1-7.6 0-8.1-8.4-.8-16.1-6-19.9-13.6-4.6-9.2-2.9-20.6-.6-30.2 1.9-7.8 5.3-17.3 13-21 5.6-2.7 14.8-2 17.3 4.6 1.7 4.9 9.5 2.8 7.7-2.1z"/><path d="M602 849.6c1.1 10.5 3.4 22.5 14.6 26.6 9.8 3.6 20.2-4.1 18.8-14.6-.7-5.1-8.8-5.2-8.1 0 1 7.6-6.7 9.4-11.6 4.7-4.3-4.2-5-11-5.5-16.6-.6-5.2-8.7-5.3-8.2-.1zm72.6-12.2c5.3-12.7 8.8-29.1 3.9-42.5-3.9-10.7-15.4-19.6-27-14.9-11.8 4.8-19.1 20.6-22.5 32-3.3 11.3-4.7 25.5 1.6 36.1 8.5 14.2 25 11 37.9 5.7 4.8-1.9 2.7-9.8-2.2-7.8-5.9 2.4-12.6 5.3-19.2 4.4-6.4-.8-10.2-5.7-11.8-11.7-3.2-11.8.5-25.7 6.1-36.1 2.9-5.4 6.8-12.3 12.6-14.9 6-2.7 12.3 1.5 15.3 6.7 6.8 11.9 2.2 29.2-2.7 40.9-1.8 4.7 6 6.8 8 2.1z"/><path d="M634.6 854.8c-3.5 9.6 2.8 21.1 12.9 23.2 11.1 2.2 21.5-8.4 20.2-19.3-.6-5.1-8.7-5.2-8.1 0 .7 6-4.4 13.1-11.2 11.2-5.5-1.5-7.9-8-6.1-13 1.8-4.9-6-7-7.7-2.1zm73.7-1.6c7.5-12.1 12.5-25.6 14.4-39.7 1-6.9 1.3-14 .7-20.9-.5-5.7-1.5-11.7-6.3-15.3-9.5-7.3-22.2-.7-28.6 7.4-8 10.1-10.8 23.9-13.2 36.2-1.8 9.1-8.1 31.4 6.1 34.2 5.1 1 7.2-6.8 2.2-7.8-5.2-1-2.6-11.7-2.1-15 1.1-7.1 2.5-14.2 4.3-21.2 2.6-10.1 6.4-23.7 17.2-27.9 6.7-2.6 11.2.7 12.1 7.6.8 6.6.6 13.5-.2 20-1.6 13.7-6.4 26.8-13.7 38.5-2.6 4.3 4.4 8.4 7.1 3.9z"/><path d="M677.6 850c3.7 7.5 13.2 11.3 21 8.3 4.8-1.9 2.7-9.7-2.2-7.8-4.7 1.8-9.6 0-11.8-4.5-2.3-4.7-9.3-.6-7 4z"/><path d="M669.9 861.4c-.3 7.9 1.2 15.2 4.6 22.3.9 2 3.8 2.5 5.5 1.5 8.5-4.9 16.3-10.8 23.3-17.7 3.7-3.7-2-9.4-5.7-5.7-6.5 6.5-13.7 11.9-21.6 16.5 1.8.5 3.7 1 5.5 1.5-2.7-5.8-3.8-11.9-3.5-18.2.2-5.4-7.9-5.4-8.1-.2zm-186.3 13.4c-8 5.2-2.2 16.9 6.5 16.6 5.5-.2 9.9-4.2 13.9-7.6 5.8-5 11.5-10 17.3-15 3.9-3.4-1.8-9.1-5.7-5.7-5 4.4-10.1 8.7-15.1 13.1-2.3 2-4.6 4.4-7.3 5.9-1.3.7-3 1.6-4.5.9-.9-.4-.3-1.7-.9-1.2 4.2-2.8.2-9.8-4.2-7zM257.7 671c-5 5-5.5 13.8-.3 18.8s13.8 4.7 18.8-.3c3.7-3.7-2-9.4-5.7-5.7-1.9 1.9-5.4 2.3-7.4.3-2-2-1.6-5.5.3-7.4 3.7-3.7-2-9.4-5.7-5.7zm42.1 9c-1.8 8.3 10.2 13.4 14.8 6.2 1.2-1.8.4-4.5-1.5-5.5-2-1.1-4.4-.4-5.5 1.5l.1-.1c.5-.3.5-.4.1-.2.1-.1.3-.1.5-.2-.4.1-.4.1.3 0h-.4c-.3 0-.2 0 .4.1-.1 0-1.2-.3-.6-.1.6.2-.4-.3-.6-.3.6.4.1.2 0-.1.3.5.4.5.2.1.1.2.1.3.2.5-.1-.4-.1-.3 0 .3v.2c.5-2.1-.6-4.4-2.8-5-2.3-.8-4.8.4-5.2 2.6zm-29 47.5c6.4 12.1 24 12.5 31.9 1.9 3.1-4.2-3.9-8.2-7-4.1-4.5 6-14.7 4.3-17.9-1.9-2.4-4.6-9.4-.5-7 4.1zm423-99.9c21.7-5 44-6 66.1-3 5.1.7 5.1-7.4 0-8.1-22.8-3-45.8-1.9-68.2 3.3-5.1 1.2-3 9 2.1 7.8z"/><path d="M747.7 643.2c14.7-12 33.7-18 52.6-16.7 2.3.2 4.6.4 6.9.8 2.7.5 3.1.6 3.4 3.5.5 5 .5 10.1.1 15.1-.8 10.9-3.8 21.5-8.4 31.3-2.2 4.7 4.8 8.8 7 4.1 5.4-11.5 8.8-23.6 9.6-36.3.4-5.9.7-12.8-.7-18.6-1.4-5.6-6.1-6.6-11.2-7.3-23.3-3.4-46.8 3.5-65 18.4-4 3.3 1.7 9 5.7 5.7z"/><path d="M808.3 660.7c19.8 8.3 37.1 21.2 51 37.5 3.4 4 9.1-1.8 5.7-5.7-14.9-17.4-33.5-30.7-54.6-39.5-4.7-2.1-6.8 5.7-2.1 7.7z"/><path d="M833.5 714c14.3-6.6 30.8-7.5 45.8-2.4 1 .3 5.4 1.4 5.5 2.3-.1-.6-2.8 3.5-2.8 3.6-1.7 3.3-3.5 6.4-5.5 9.5-4.3 6.6-9.2 12.7-14.7 18.4-3.6 3.8 2.1 9.5 5.7 5.7 6.9-7.2 13.1-15.1 18.2-23.6 4-6.7 11.3-16.8 1.5-21.5-18-8.6-39.9-7.3-57.7.9-4.8 2.3-.7 9.2 4 7.1z"/><path d="M878.5 739.3c16.8 21.1 18.4 51.4 3 73.7-3 4.3 4 8.3 7 4.1 17.6-25.5 14.7-59.7-4.3-83.5-3.2-4.1-8.9 1.6-5.7 5.7z"/><path d="M864.5 806.6c13.1 1.5 22.4 17.7 26.3 29 3 8.7-8.7 13-15.4 13.8-7.7 1-15-1.2-21.2-5.9-4.1-3.2-8.2 3.9-4.1 7 8 6.1 18.4 8.4 28.3 6.6 8.7-1.6 20.8-7.5 21.2-17.7.2-5-2.5-9.8-4.7-14.1-2.2-4.4-4.7-8.8-7.8-12.7-5.8-7.6-13-13-22.6-14.1-5.2-.5-5.1 7.5 0 8.1zm-19 .3c-4.6 9.1-6.7 19-5.8 29.2.4 5.2 8.5 5.2 8.1 0-.7-8.8.8-17.2 4.7-25.1 2.3-4.6-4.7-8.7-7-4.1zM826 733.2c-.9 17.5 17.8 28.4 32.8 19.6 4.5-2.7.4-9.7-4.1-7-9.9 5.9-21.2-1.2-20.6-12.6.2-5.2-7.8-5.2-8.1 0zm-70.9-68.6c-.2 13 8.9 25.6 21.8 28.4 12.8 2.8 26.6-4.4 31.9-16.3 2.1-4.7-4.9-8.8-7-4.1-3.8 8.6-13.1 14.6-22.7 12.6-9.5-2-16-11.2-15.8-20.6 0-5.2-8.1-5.2-8.2 0zm-55.1 76c9.4-2.6 19-5.1 28.9-4.3 7.9.6 15.3 3.8 21.9 8.1 13.1 8.6 23.6 21.8 31.3 35.3 15.7 27.3 18.6 63.7-3.1 88.9-3.4 3.9 2.3 9.7 5.7 5.7 18.1-21 22.1-50.4 14-76.5-4.2-13.7-11.3-26.2-20.1-37.5-8.3-10.6-18.4-20.8-30.7-26.8-16.3-8-33.3-5.5-50.2-.7-4.9 1.4-2.7 9.2 2.3 7.8z"/><path d="M813.5 821.2c-1.3 18.3-15.4 31.8-28.4 43.2-6.7 5.8-13.7 11.5-19.5 18.2-4.7 5.4-7.8 12.9-2.1 18.8 5 5.3 13.6 8.5 20.4 10.7 7.6 2.5 15.7 3.9 23.8 4 15.6.3 30.4-4 42.8-13.5 13.7-10.4 25.1-24.7 32.4-40.2 2.2-4.7-4.8-8.8-7-4.1-11.6 24.5-33.3 47.6-61.7 49.6-14.5 1-30.7-2.1-42.8-10.4-5-3.5-1.5-7.7 1.7-11 2.7-2.8 5.5-5.5 8.4-8 6-5.4 12.2-10.5 18-16.1 11.5-11.1 21-24.7 22.2-41.1.3-5.3-7.8-5.3-8.2-.1zM367.9 269.3c-6.4 1.3-11.3 8-10.5 14.5.8 6.5 7.3 11.8 13.8 11.3s12-7 11.5-13.5c-.8-9.3-11.6-14.5-20.9-14.3m127.7-9c-4.6 5.2-9.5 10.8-10.5 17.7s3.8 15.1 10.7 14.9c4.6-.1 8.4-3.8 10.4-7.9 5.5-11.7-3.2-27.5-16-29.1"/><path d="M366.4 272.1c3.2-.6 6.3 3.1 5.3 6.1-1 3.1-5.7 4.1-7.9 1.7s-.8-7 2.4-7.8m121.1-8.5c-3.5 3.1-.5 10.1 4.1 9.7 3.8-2.7 2.8-9.7-1.6-11.3" fill="#fff"/></svg>
+ data/ExplosionTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M412.5 629.1c-10-11.7-5.9-30 2.2-43.1-22.5-2.5-39.1-28.6-31.7-50.1s36.5-31.9 55.8-20c-10.7-12.3-10.9-30.7-7.2-46.5 4.7-20 15.8-39.7 34.3-48.8s44.5-3.3 53.1 15.3c11-20.5 37.7-31 59.7-23.5s36.7 32.2 32.9 55.1c18.9.4 36.6 15.2 40.2 33.8 3.6 18.6-7.2 39-24.7 46.4 18.8 20 20.9 54.4 2.8 75.2-18 20.7-54.5 22.5-73 2.3-9.5 19.8-22.1 40-42.4 48.3-33.5 13.6-51.7-14.5-51.9-42.5-15.7 2.1-36.4 14.2-50.1-1.9z" opacity=".7" fill="#bfc9c9"/><path d="M374.3 484.3c-6.4 3-13.2 5.3-19 9.5s-10.2 11-9.1 18 9.7 12.5 15.7 8.7c3.1-2 4.6-5.6 6.3-8.9 8.5-16.6 26.1-28.2 44.7-29.5-2.5-30.2 10.9-61.3 34.5-80.3 4-3.3 8.5-6.2 13.6-7.2 14.6-2.6 31.7 11.5 42.9 1.8 2.1-1.8 3.5-4.3 5.8-5.8 10.2-6.8 25.7 9.9 35.1 1.9-20.3-16-27.3-46.7-15.8-69.9-14.6 7.7-15 28.3-24.1 42.1-8.3 12.6-24 18.9-39 19.5-14.8.5-29.5-3.6-43.4-8-8 17.1.4 37.1-4.5 55.8-6 22.2-23 42.4-43.7 52.3zm169.5 230.6c-4.5-17.9 6.7-36.7 22-46.9s34-13.7 52.2-16.9l69-12.3c-24-43.4-13.6-102.8 23.6-135.6-16.4-2.8-30-17.5-31.4-34.1-13.7.5-25.2-12.3-27.1-25.9-1.9-13.6 3.9-27.1 11.6-38.4 2.1-3.1 4.5-6.4 4.5-10.1-.1-4.9-4.5-8.9-9.1-10.5-17.5-6.3-35.7 12.9-35.8 31.5s11.4 35 22.7 49.9c11.2 14.8 23.2 30.8 24.1 49.4.5 9.8-2.2 19.5-4.9 28.9-4.4 15.6-8.8 31.2-13.3 46.8-5.1 18-10.7 36.9-23.7 50.4s-36 19.5-50.7 7.9c-3.3-2.6-6.1-5.9-10.1-7.1-9.8-2.9-17.3 8.1-24 15.8-11.9 13.8-31.9 18.1-49.2 14.2-21.8-4.9-22.3-21.8-37-30.9-29.9-18.5-23.8 31.7-40.1 55.2 26.7-16.3 115.2-26.7 126.7 18.7z" opacity=".7" fill="#ff0"/><path d="M521.2 419.4c-14.8-23.1-47.9-25.5-69.5-10.8-22.7 15.4-36.3 46.4-32.9 73.6 1.7 13.4 8.1 26.8 21.2 32.3 4.5 1.9 8.4-4.7 3.9-6.6-21.5-9.2-20-38.5-13.7-57 7.8-23 26.7-44.5 52.7-44 12.5.3 24.9 5.6 31.7 16.4 2.6 4.1 9.3.3 6.6-3.9zm-107 71.4c-28-3.5-45.1 28.8-47.4 52.3-1.3 13.4 2 28 12.1 37.4 8.8 8.2 21.6 12.3 33.1 7.9 4.6-1.7 2.6-9.2-2-7.4-9.6 3.7-19.9 0-26.9-7.2-8.2-8.5-10-21.1-8.4-32.4 2.6-19.3 16.5-45.8 39.5-43 4.9.7 4.8-7 0-7.6zm111.5-78.6c20.9-14.5 51.5-13.7 70.8 3.6 18.5 16.5 24.1 45.4 13.3 67.7-2.2 4.4 4.5 8.3 6.6 3.9 9.7-19.9 8.4-43.9-3-62.9-11.6-19.4-33.1-30.4-55.5-30.1-12.8.1-25.5 3.9-36.1 11.2-4.1 2.8-.2 9.5 3.9 6.6z"/><path d="M619.4 460.9c21.8-1.6 43.7 14.7 46.9 36.7 3.1 21.6-12.6 43.3-33.5 48.3 1 2.3 2 4.7 3 7 4.5-3.2 10.2-1.7 14.1 1.9 4.9 4.5 5.7 11.9 5.5 18.1-.4 12.2-3.8 25.2-9.5 36-5.6 10.7-14.2 20-25.6 24.5-11.2 4.4-23.8 4.3-34-2.3-4.2-2.7-8 4-3.9 6.6 20.1 13.1 47.1 4.9 61.8-12.5C652 616 657 604.7 660 593c2.9-11.5 5.3-25.1.3-36.3-4.5-10.4-18.2-17.5-28.4-10.3-3.5 2.4-1.4 8.1 3 7 19.1-4.5 34.3-20.9 38.3-40 4.2-20-5-39.6-21.5-51.1-9.4-6.5-20.9-9.9-32.3-9-4.9.3-4.9 8 0 7.6zM485.7 608.2c-20.3 3.7-30.2 28.5-22.1 46.3 9.5 21 36.3 28 56.8 20.3 13-4.8 23.5-14 31.7-25 3-4-3.7-7.8-6.6-3.9-14.5 19.5-41.3 32.7-63.8 17.9-9.1-6-14.7-16.2-12.9-27.2 1.7-10.2 8.7-19.2 19.1-21.1 4.7-.8 2.7-8.2-2.2-7.3z"/><path d="M411.4 622.8c1.7 10.7 12 17.3 22.1 18.2 13 1.3 24.7-6.8 34.7-14 4-2.9.1-9.5-3.9-6.6-8 5.8-17.1 12.7-27.4 13.1-8.1.3-16.8-4.2-18.1-12.7-.8-4.9-8.2-2.8-7.4 2zm-32.9-302.3c17.5 25.8 29.8 56.5 28.4 88.1-1.2 27.7-14.7 54.3-37.9 70.1-12.3 8.4-26.6 13-41.5 12.3-5-.2-4.9 7.5 0 7.7 29 1.3 55.4-15.9 71.1-39.5 17.9-26.9 19.5-60.5 11-91-5.1-18.4-13.8-35.8-24.5-51.6-2.7-4-9.4-.2-6.6 3.9zm-74.1 180.1c19.2 4.1 36.1 15.7 46.5 32.4 2.6 4.2 9.3.3 6.6-3.9-11.4-18.3-30-31.5-51.1-36-4.8-1-6.9 6.4-2 7.5z"/><path d="M388.1 328.8c13 24.6 30.5 50.8 59.1 57.8 12.4 3.1 26.1 2.4 37.5-3.7 12.2-6.6 19.6-19 23.1-32 4.8-18.3 2.2-37.3 2.9-56 .2-5-7.5-4.9-7.7 0-.9 25.4 6 61.3-18 78.8-20.8 15.3-49.1 4.3-65.4-12.2-10.4-10.6-18-23.5-24.9-36.5-2.2-4.4-8.9-.5-6.6 3.8zm143.4-28.2c-5.2 19.2-10.9 40.1-5.3 60 4.3 15.4 15.2 29.4 31.1 33.5 4.8 1.2 6.8-6.2 2-7.4-14.2-3.7-23.2-16.8-26.4-30.5-4.1-17.8 1.2-36.4 5.9-53.5 1.4-4.9-6-6.9-7.3-2.1zm59 112.1c11 3.8 22.6-4 31.3-10 9.5-6.6 18-14.6 25.2-23.8 3-3.9-2.4-9.3-5.4-5.4-6.2 7.9-13.2 15-21.3 20.9-7.1 5.2-18.3 14.1-27.6 10.9-4.8-1.6-6.8 5.8-2.2 7.4zm133.7-54.6c-23.4 11.8-46.5 29.3-60.8 51.6-6.5 10.1-10.6 21.9-9.2 34 1.3 10.8 6.2 20.8 13.6 28.7 8.5 9.1 20 14.9 32.4 15.6 4.9.3 4.9-7.4 0-7.7-25.9-1.5-44.6-29.6-36.5-54 4.7-14.1 15.7-25.8 26.4-35.6 11.3-10.4 24.2-19.1 37.9-26 4.5-2.2.6-8.8-3.8-6.6zm-7.7 145.2c-13.6-2.5-27 5.2-31.6 18.3-1.6 4.7 5.8 6.7 7.4 2 3.1-8.9 12.8-14.6 22.1-12.9 4.8.9 6.9-6.5 2.1-7.4zM373 592c21.9 14 37.2 38.2 39.9 64.2 2.7 26.9-7.7 54.1-27.3 72.6-3.6 3.4 1.8 8.8 5.4 5.4 33.8-31.9 39.6-85 12.8-123-7.2-10.3-16.3-19-26.9-25.8-4.2-2.7-8 3.9-3.9 6.6zm60.2 119.9c8.6-20 35.4-21.4 54.1-22.4 12.3-.6 27-.9 37.1 7.4 7.8 6.4 12.7 18 6.7 27.1-2.7 4.2 3.9 8 6.6 3.9 5.3-8 4.5-18 .2-26.3-5-9.6-14.1-15.6-24.5-18.2-11.5-2.8-23.7-2-35.4-1-9.7.8-19.5 2.1-28.6 5.6-9.9 3.8-18.6 10.1-22.9 20-1.9 4.5 4.8 8.4 6.7 3.9zm137.6-16.4c-8.1-10.1 2.2-22.6 10.8-27.9 10.7-6.6 23-11 35-14.5 25-7.3 51.2-9.2 77.1-5.9 4.9.6 4.8-7.1 0-7.7-29.9-3.9-60.8-.7-89.2 9.4-12.5 4.4-27.1 9.7-36.3 19.8-8.1 9-10.6 22.4-2.7 32.2 3 3.9 8.4-1.6 5.3-5.4z"/><path d="M436.2 233.4c2.1 25.9 4.3 51.9 6.4 77.8.4 4.9 8.1 4.9 7.7 0-2.1-26-4.3-51.9-6.4-77.8-.4-4.9-8.1-5-7.7 0zM261.1 686.7c30.4-15.9 60.9-31.8 91.3-47.7 4.4-2.3.5-8.9-3.9-6.6-30.4 15.9-60.9 31.8-91.3 47.7-4.4 2.2-.5 8.9 3.9 6.6zm237-140.8c-10.5-5.1-13.8-20.7-6.1-29.7 10.9-12.9 31.2-3.7 42.1 4.1 4 2.9 7.9-3.8 3.9-6.6-14.5-10.4-39.6-18.7-52.6-1.4-9.5 12.5-5.4 33.2 8.9 40.3 4.4 2.1 8.3-4.5 3.8-6.7z"/><path d="M531.7 503.6c2.5-10.9 14.7-18.9 25.8-15.3 11.1 3.6 16.2 17.1 12 27.5-1.8 4.6 5.6 6.6 7.4 2 5.8-14.3-2.6-32.3-17.4-37-14.9-4.7-31.8 5.8-35.2 20.7-1.1 4.9 6.3 6.9 7.4 2.1zm54.4 14.4c5.6-3.5 14-1.9 17.2 4.1 3.4 6.4-.8 14.8-7.4 16.8-4.7 1.5-2.7 8.9 2 7.4 11-3.4 17.6-16.5 12.5-27.2-4.9-10.2-18.8-13.7-28.2-7.8-4.2 2.7-.3 9.3 3.9 6.7zm-41.4 60.5c.6-3 5.9-3.1 8.3-3.4 3.7-.4 7.9-.8 11.5.5 2.7 1 4.7 2.7 4.9 5.7.1 1.9-.3 4.8-2.7 4.8-4.9.1-5 7.8 0 7.7 11.7-.3 13.3-16.7 5.2-22.8-5.8-4.4-13.4-4.3-20.3-3.4-5.8.7-13 2.2-14.4 8.9-.9 4.8 6.5 6.9 7.5 2z"/></svg>
+ data/FishTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M640.8 505c2.9-5.6 6.8-11.5 5.6-17.7-1-5.6-5.9-9.6-10.6-13-44.3-31.9-98.6-49.1-153.1-50.1-43.8-.8-108.4-3.8-137.3 34.6 32.8 20.6 45.9 67.3 28.8 102-6.6 13.4-17 24.8-22.8 38.6-5.9 13.8-5.9 32 5.7 41.4 7.7 6.2 18.3 7 28.2 7.2 25.7.8 51.4.3 77.1-1.4l-1.5 7.5h60.2c5.4-.3 10.9-.4 16.3-.3-.8-2.6-2.3-4.9-4.9-6.5 12-18.8 38.3-22.4 54.8-37.4 9-8.2 14.7-19.5 22.3-29 7.7-9.5 18.9-17.9 31-16.4-8.6-18.4-9.2-41.1.2-59.5z" opacity=".7" fill="#fcce37"/><path d="M599.3 405.7c-2.9-3.7-5.9-7.3-8.8-11-1.5-1.8-3.2-3.8-5.6-4.1-3-.4-5.6 1.9-8.6 2-4.6.1-7.4-5-7.6-9.4-.3-4.3.6-9-1.6-12.8-3.4-5.9-12.1-6.6-18.9-5.2-6.9 1.4-13.9 4.1-20.7 2.5 10.6-7.4 14.5-22.2 8.9-33.6-15.4 4.2-49.9 15.7-71.6 32.7-16.2 7.5-29.1 21.9-34.7 38.9-.6 1.7-1.1 3.6-.4 5.3.9 2.4 3.7 3.5 6.2 4.1 10.5 2.9 21.3 4.7 32.2 5.6 31.4 10 89 10.8 109.1 17.3 9.4 3 21.1 6.1 28.2-.4 9-8.2 1.6-22.4-6.1-31.9zM454.2 587.2c26.2-8.2 51-20.6 73.3-36.6 6.8-4.9 14-11.2 14.7-19.6 1-13.2-14.2-21.4-27.3-23.9-21.9-4.1-64.3-4-81.5 13.6-21.6 22.1 11 45.3 20.8 66.5zm38 109.4c6.7 7.2 17.7 14.8 25.2 8.5 3.2-2.7 4.3-7.1 5.3-11.1 1.5-5.9 3.2-12.1 7.3-16.6s11.2-7 16.5-3.9c.1-10.9-2.5-25.1-13.2-26.7-5.8-.8-11.2 2.8-16.6 5-26.4 11-60.1-7.3-59.1 31.6.2 9.5 5 35.4 17.9 34.7 4.6-.2 15.8-22.5 16.7-21.5zm72.7-72.6c-4.4-12.8-8.9-26.5-6-39.7s16.3-25.2 29.3-21.4c7.8 2.3 13.3 9.5 15.7 17.2s2.3 16 2.2 24.1c-1.4-.9-2.8-1.9-4.2-2.8M395.3 433c12.9 11.1 7 34 18.2 46.7 9.2 10.4 27.7 8.7 36.6-1.9 8.9-10.6 8.3-27.3.6-38.8s-21.4-18.1-35.1-19.8c-5.4-.6-11.4-.4-15.3 3.3m207.6 55.8c-3.9-3-9.3-2.8-13.8-1.9-10.2 2.1-16.7 12.8-13.1 22.6.8 2.2 2.1 4.3 3.8 6 6.9 6.7 19.4 6.2 25.7-1.1 6.3-7.3 5-19.8-2.6-25.6zm134.9-51.7c11.8-6.4 27.2-12.3 37.3-3.5 7 6.1 7.9 17.3 4.8 26.2s-9.5 16.2-15.4 23.5c-17.8 22-33 46.2-45.1 71.9 20 14.5 36.7 33.7 48.5 55.8 7.4 13.8 12 33.1.5 43.8-9.3 8.7-23.9 6.3-35.9 2.5-35.4-11.2-68.3-30.2-95.8-55.4-6-5.5-12.2-12.4-11.5-20.6.4-4.7 10-10.7 11.3-15.3 2.8-9.6 7.1-28.8 6.1-38.7-5.9-58.2 54.9-68.3 95.2-90.2z" opacity=".7" fill="#fc7937"/><path d="M265.5 551c11.3 16.4 22.7 32.8 34 49.1 6.2 9 15.2 19.2 26 16.9 3.3-.7 6.3-2.6 9-4.6 40.3-28.4 73.9-103 24.8-141.1-36.2-28-121.3 39.9-93.8 79.7z" opacity=".7" fill="#fce7a4"/><path d="M325.6 486.8c-10.7 2.2-20.7 10.3-22.8 21-2.1 10.8 5.5 23.1 16.4 24.1 5.2.5 10.5-1.5 14.9-4.3 9.8-6.1 16.9-17.3 15.8-28.8s-12.4-21.7-23.7-19.5" opacity=".7" fill="#fcf7e8"/><path d="M333.2 511.7c5.6 3.7 5.2 13.6-.7 16.8-5.9 3.2-14.5-1.8-14.5-8.5s8.4-12 14.4-8.9"/><path d="M261.3 554.3c-13.8-11.6-2.1-30.4 6.5-41 10.2-12.5 21.6-24.1 34-34.6 24.4-20.6 52.6-36.9 82.7-47.6 17.3-6.1 35.2-10.6 53.5-13 2.5-.3 4.5-1.9 4.6-4.6 0-2.2-2.1-4.9-4.6-4.6-69.4 9.1-135.6 45.3-178.9 100.7-6.2 7.9-11.8 16.6-12.9 26.8-1 8.9 1.7 18.4 8.7 24.2 4.4 3.9 10.9-2.6 6.4-6.3z"/><path d="M406.4 427.6c25.3-44.3 69.5-76.8 119.3-87.8 5.8-1.3 16-4.7 19 2.6 3.1 7.3-2.6 14.9-6.5 20.6-2.3 3.4 1.5 7.7 5.2 6.7 6.6-1.7 13.2-3.4 20-3.4 3 0 6 .3 9 1.3 1.8.6 7.4 2.7 7.2 5.1-.1 1.2-2.7 2.9-3.5 3.7-1.7 1.7-3.5 3.5-4.2 5.9-.7 2.2-.4 4.9 1 6.7 1.9 2.5 6.7 2.6 9.6 3.4 6.9 1.9 13.2 4.4 18.7 9 1.9 1.6 3.9 3 6 4.3 2.1 1.4 4.6 2.9 6.1 4.2 1 .8 1.9 1.7 2.8 2.7.3.4 1.2 2 1.3 2.3.5 1.3.4 1.8.2 2.9-.4 1.7-1.3 3.3-2.4 4.7-4.1 5.5-10.1 9.5-15.8 13.1-4.9 3.2-.3 11.1 4.6 7.9 9.6-6.2 27.2-17.9 21.9-31.9-1.7-4.5-5.4-7.8-9.2-10.5-1.6-1.2-3.3-2.3-5-3.4-.7-.5-1.5-1-2.2-1.5-.3-.2-.7-.5-1-.7-.7-.5.4.4-.4-.3-8.9-7.6-19.2-10.8-30.4-13.5l3.2 3.2c-.3-.8-.6.2.1-.5s1.4-1.5 2.2-2.2c1.7-1.6 3.4-3.2 4.5-5.3 3.4-6.5-1.5-12.5-7-15.7-12.1-7-26.9-3.8-39.6-.4 1.7 2.2 3.4 4.5 5.2 6.7 4.4-6.4 8.9-13.5 8.6-21.6-.3-6.8-3.8-13.4-10.4-15.9-7.1-2.8-15.5-.3-22.6 1.3-7.1 1.6-14.1 3.7-21 6.2-27.1 9.8-51.9 25.7-72.2 46.1-11.6 11.7-21.7 25-29.9 39.3-3.2 5.2 4.7 9.8 7.6 4.7zM249.7 549.2c30 61.7 91.2 103.8 159.4 110.2 20.3 1.9 40.7.5 60.6-3.8 5.7-1.2 3.3-10-2.4-8.8-33.9 7.4-69.5 5.1-102.3-6.2-30.1-10.4-57.1-28.8-78.3-52.5-11.7-13.1-21.4-27.8-29.1-43.5-2.6-5.3-10.4-.6-7.9 4.6z"/><path d="M439.7 653.6c1.5 18 6.9 35.4 16 51 4.5 7.7 10 15 16.2 21.5 5.2 5.5 13.4 10.7 19.7 3.5 2-2.2 2.9-5.1 3.9-7.8.9-2.3 1.7-5.2 4.4-5.7 2.4-.5 5.2.7 7.5 1.4 3.3 1 6.6 2.2 10.1 2.5 6.7.6 12.3-3.3 13.8-10 .7-3 .6-6.2.8-9.2.3-4.4 1.4-4.7 5.8-5.2 8.9-1 15.6-8.2 17.3-16.9 2.1-10.4-3-20.1-9.3-28-3.6-4.6-10 1.9-6.5 6.5 4.5 5.8 8.8 13.7 6.4 21.2-.9 2.8-2.6 5.4-5 7-3.3 2.1-7.4 1.1-10.9 2.6-6 2.6-6.9 8.8-7.1 14.7-.2 4.5-.2 9.1-5.8 8.2-5.4-.9-10.2-3.6-15.7-3.8-5.8-.2-10.5 2.9-12.9 8.1-1.1 2.3-1.7 4.8-2.8 7.1-1.6 3.2-3.4 1.4-5.5-.7-5.5-5.5-10.4-11.7-14.5-18.2-9.4-14.9-15.2-31.9-16.7-49.5-.5-6.1-9.7-6.2-9.2-.3zm-70.1-167.3c8.9-1 12 16.1 13.3 22.4 2 9.4 2.4 19.1 1.5 28.7-1.8 19-9.3 37.9-21.2 52.9-6.9 8.7-15.2 16-24.7 21.7-5 3-.5 10.9 4.6 7.9 38.6-23 58.6-72 48.2-115.5-2.5-10.3-7.9-28.5-21.7-27-5.8.4-5.9 9.5 0 8.9zm-62.3-.7c-12 4.5-18 17.1-15.6 29.4 2.5 12.7 14.1 24.9 27.1 26.8 13.7 2.1 24.4-8.7 30.1-20 5.8-11.4 8.3-26.7-.3-37.4-7.7-9.6-22.8-12.9-32.3-4.1-4.3 4 2.1 10.4 6.5 6.5 6.9-6.4 18.3-.1 21.1 7.5 4.1 11.1-2 25.2-10 33.1-4.1 4-9.2 6.5-15 5.1-5.8-1.4-11.1-5.9-14.4-10.7-5.9-8.6-6.2-23.2 5.3-27.5 5.4-2 3-10.8-2.5-8.7z"/><path d="M325.2 519.1c-1.9.3-1.7-4.7-1-5.8 2.4-3.7 8-4.7 11.9-5.7-1.9-1.1-3.7-2.1-5.6-3.2 1.7 6 1.9 12 .2 18.1-1.5 5.7 7.3 8.1 8.8 2.4 2-7.6 1.9-15.4-.2-23-.7-2.4-3.2-3.8-5.6-3.2-7.9 2-18.1 5.7-19.2 15.2-.9 7.9 4.9 15.3 13.1 14 5.8-.9 3.3-9.7-2.4-8.8zm106.7 1.9c16.2-8.5 33.9-14.3 52.1-16.7 14.5-1.9 31.1-3 44.9 3.2 5.3 2.4 10.4 6.1 12.9 11.5 3.2 7.2 1.1 14.9-2.8 21.3-8.5 14.2-24.3 24.7-38.7 32.3-8.2 4.4-16.9 7.8-25.9 10.4-4.4 1.3-8.9 2.4-13.4 3.1-4.1.7-9.2 1.2-12.6-1.8-4.4-3.8-10.9 2.6-6.5 6.5 7.5 6.6 17.3 5.1 26.3 3.2 9.5-2.1 18.7-5.2 27.5-9.1 17.2-7.6 35-18.9 46.8-33.8 5.7-7.2 10.4-16.2 9.9-25.6-.4-7.8-4-15.1-10-20.2-13-10.9-31.4-12.1-47.6-11.1-23.6 1.4-46.6 7.9-67.6 18.9-5.1 2.8-.5 10.7 4.7 7.9z"/><path d="M413.4 553.1c12 9 22 20.3 29.7 33.2 3 5 10.9.5 7.9-4.6-8.5-14.3-19.7-26.5-33-36.4-4.7-3.6-9.3 4.3-4.6 7.8zm69.1-20.6c-6.5 2.1-13 4.1-19.5 6.2-3.6 1.1-4.7 6.4-1.1 8.3 5.1 2.7 9.4 6.1 13.1 10.4v-6.5c-2.3 2.2-4.7 4.3-7 6.5-4.3 4 2.1 10.4 6.5 6.5 2.3-2.2 4.7-4.3 7-6.5 1.9-1.8 1.6-4.7 0-6.5-4.2-4.8-9.3-8.8-15-11.8-.4 2.8-.7 5.5-1.1 8.3 6.5-2.1 13-4.1 19.5-6.2 5.6-1.7 3.2-10.5-2.4-8.7zm-28.4-3.1c9.5 0 19 .1 28.5.1 5.9 0 5.9-9.1 0-9.1-9.5 0-19-.1-28.5-.1-5.9-.1-5.9 9 0 9.1zm-10.8-85.7c10.1 1.6 12.2 14.2 2.9 18.7-5.3 2.6-.7 10.4 4.6 7.9 7.4-3.6 11.9-12 10.5-20.2-1.3-7.7-7.9-14-15.5-15.2-5.8-.9-8.3 7.9-2.5 8.8zm32.8-6.8c3.7-.5 6.1 4.4 5.1 7.3-1.9 5.6 6.9 7.9 8.8 2.4 1.7-4.8.1-10-3.1-13.8-3.4-4-8.2-5.5-13.2-4.8-2.4.3-3.8 3.5-3.2 5.6.7 2.7 3.1 3.6 5.6 3.3zM581.7 523c5.8 1.2 10.7 6.2 10.6 12.3-.1 5.8-5 11.3-10.8 12-5.8.7-5.8 9.8 0 9.1 10.4-1.2 19.1-9.2 19.9-20 .7-10.4-7.2-20.1-17.3-22.2-5.7-1.1-8.2 7.7-2.4 8.8zm-22.3 51.7c2.8 5.1.6 11.4-4.5 14-5.2 2.7-.6 10.5 4.6 7.9 9.5-4.9 12.9-17.3 7.7-26.5-2.8-5.1-10.7-.5-7.8 4.6zm-29.1-143.6c41.7 2.9 78.2 26.7 110.8 50.9 4.7 3.5 9.3-4.4 4.6-7.9-34.1-25.2-72-49.1-115.4-52.1-5.9-.4-5.8 8.7 0 9.1zm-25 223.6c25.4 2.7 49.6-8.2 70.8-21.1 20.2-12.3 41.9-26.6 46.3-51.6 1-5.7-7.8-8.2-8.8-2.4-4.1 23-24.7 35.7-43.3 46.8-19.7 11.8-41.5 21.7-65 19.2-5.8-.6-5.8 8.5 0 9.1z"/><path d="M647.7 478.2c22.5-14.3 46.6-26.1 71.8-35 12.5-4.4 25.2-8 38-11 6.5-1.5 13.3-3.3 20-3.8 5.6-.4 12.5.7 13.6 7.2 1 5.8 9.7 3.3 8.8-2.4-1.8-11.1-14-14.8-23.7-13.8-11.5 1.2-23 4.2-34.1 7.2-22.2 6-43.8 14.1-64.5 24.2-11.9 5.8-23.4 12.3-34.5 19.4-4.9 3.3-.4 11.2 4.6 8z"/><path d="M787.4 438.2c2.1 2.3-2.4 8.9-3.5 11-2.2 4.4-4.6 8.8-7 13.1-4.9 8.8-10.2 17.5-15.7 25.9-11 16.8-23.3 32.7-36.6 47.6-3.9 4.4 2.5 10.8 6.5 6.5 15-16.9 28.8-35 41-54 6-9.5 11.7-19.2 17-29.1 4.2-7.8 12.3-19.2 4.9-27.5-4.1-4.3-10.5 2.1-6.6 6.5zM623.5 578.3c28.2 35.3 64 76.4 113.8 72.9 14.6-1 28.7-5.7 40.9-13.6 4.9-3.2.3-11.1-4.6-7.9-20.1 13-44.7 15.9-67.3 8.2-20.5-7-37.3-21.7-51.9-37.2-8.6-9.2-16.6-19-24.5-28.8-3.7-4.7-10.1 1.8-6.4 6.4z"/><path d="M711.5 542.7c33.6 19 58.8 51 69.3 88.2 1.6 5.6 10.4 3.2 8.8-2.4-11.1-39.3-37.9-73.5-73.5-93.6-5.1-2.9-9.8 4.9-4.6 7.8zm-21.2-43.2c24.4-12.9 50.5-22 77.5-27.3 5.8-1.1 3.3-9.9-2.4-8.8-27.8 5.5-54.6 15-79.7 28.3-5.2 2.7-.5 10.5 4.6 7.8zm17.3 22.9c12.7-4.1 26-5 39.1-2.3 5.7 1.2 8.2-7.6 2.4-8.8-14.7-3-29.7-2.3-43.9 2.3-5.6 1.8-3.2 10.6 2.4 8.8z"/><path d="M718.4 605.9c10.8-1.2 21.6-2.5 32.4-3.7 5.8-.7 5.8-9.8 0-9.1-10.8 1.2-21.6 2.5-32.4 3.7-5.7.7-5.8 9.8 0 9.1zm32.9 26.3c4.7-1 9.4-2.1 14-3.1 5.7-1.3 3.3-10.1-2.4-8.8-4.7 1-9.4 2.1-14 3.1-5.7 1.3-3.3 10.1 2.4 8.8zm-108-141.1c7.2-.4 11.4 7.5 11 14-.6 9.3-8.5 16.9-14.5 23.1-2.2 2.3-1.5 6.9 2 7.6 8.5 1.7 9.5 12.8 7.1 19.7-3.8 10.8-13.9 18.5-19.4 28.5-2.8 5.2 5 9.8 7.9 4.6 6.5-11.9 19.2-21 21.3-35.1 1.7-10.7-2.6-24.1-14.5-26.5.7 2.5 1.3 5.1 2 7.6 8.4-8.6 18.3-19.4 17.1-32.4-1-10.3-8.8-20.8-20-20.2-5.9.3-5.9 9.5 0 9.1zm-166.8-79.3c8.7-11.3 18.9-21.4 30.1-30.1 4.6-3.6-1.9-10-6.5-6.5-11.9 9.3-22.3 20-31.5 32-1.5 2-.3 5.1 1.6 6.2 2.4 1.5 4.8.4 6.3-1.6zm41.3 5.9c4-2.7 8.1-5.4 12.1-8.1 4.8-3.2.3-11.1-4.6-7.9-4 2.7-8.1 5.4-12.1 8.1-4.8 3.3-.2 11.2 4.6 7.9z"/><path d="M327.6 509.5c-.1.8-.1 1.5-.2 2.3-.1 1.2 1.1 2.3 2.3 2.3 1.3-.1 2.1-1 2.3-2.3.1-.8.1-1.5.2-2.3.1-1.2-1.1-2.3-2.3-2.3-1.4 0-2.2 1-2.3 2.3z" fill="#fff"/><path d="M542.2 451.6c8 .1 13.1 9 10.3 16.1-2.1 5.5 6.7 7.8 8.8 2.4 5-12.8-5.7-27.5-19.1-27.6-5.9-.1-5.9 9 0 9.1zm-203.6-1.4c9.4 1 17.6 6.8 22.1 15 2.9 5.1 10.8.5 7.9-4.6-6.3-11.1-17.4-18.1-30-19.5-5.8-.6-5.8 8.5 0 9.1z"/></svg>
+ data/FlagTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M379.8 367.5c8.1 0 14.8 6.8 14.9 14.9 0 4.3.4 8.6.9 12.8 0 .2.1.5.1.9.7-21.2.8-43 1.4-64.3.3-4.2.5-8.4.4-12.6.1-1.9.1-3.7.2-5.6l-.3 2.9c-.2-5.3-.7-10.7-1.6-15.8-4.5-3.5-10.2 1.1-13 8-2.8 7-3.5 15.5-4 23.8-.7 11.7-1.4 23.4-1.9 35.2 1-.1 1.9-.2 2.9-.2zM392 612.9c.2-40.4.4-77.1.9-113.3-4.8 4.6-11.8 6.1-18 2.5-.2-.1-.5-.3-.7-.5.2 86.5 3.6 173 7.1 259.1.2 6.3.6 13 2.9 17.9 2.3 4.9 7.4 6.8 10 2.1 2.5-32.3 3.2-64.9 1.9-97.3-1-23.5-4.2-46.8-4.1-70.5zm-17.5-144c-.1.3.2-1.4.2-1.9.1-1.1.2-2.2.2-3.3.2-4.6 0-9.2-.4-13.7v-.3c-.1 6.7-.2 13.5-.2 20.2 0-.3.1-.7.2-1z" opacity=".7" fill="#f07017"/><path d="M485.6 328.6c33.1-.2 65.9 16.4 85.7 43.4 20.4 27.8 30 67.5 61.5 80.8 24.8 10.5 53-.4 76.8-13.1s48.7-27.6 75.4-25.1c-38.3 16-62.1 54.1-88.7 86.3s-65.7 62.2-105.9 52.3c-32.2-7.9-53.3-38.6-82-55.4-34.3-20-79.6-10.3-111.8 13.1-2.5-6.3-11-10-19-10.3-7.3-.2-13.3-6-13.8-13.5-3-44.7-14.2-153.1 36.6-115.2 22-25.5 50.8-43.1 85.2-43.3z" opacity=".7" fill="#05c5ff"/><path d="M374.5 503.5c-2.1-.5-4.4.2-5.8 1.8 1.2-39.4-8.8-104 7.4-139 10.2 11.7-11.3 134.9-1.6 137.2z" opacity=".7" fill="#0386ad"/><path d="M405.4 302.1c-2.5-8.6-10.4-14-19.1-14.5-10.3-.6-19.3 5.8-26.1 12.9-4 4.1 2.2 10.7 6.2 6.5 4.6-4.7 10.1-9.5 16.9-10.3 5.5-.6 11.8 2 13.4 7.6 1.6 5.5 10.3 3.4 8.7-2.2z"/><path d="M363.1 293.9c-3.9 127.9-4.1 255.9-.6 383.9 1 36.4 2.3 72.9 3.9 109.3.2 5.8 9.2 6 9 .2-5.6-127.8-7.6-255.8-5.8-383.8.5-36.5 1.3-72.9 2.5-109.4.2-5.7-8.8-6-9-.2z"/><path d="M366.4 784.5c8.1 6 18.7 10.5 28.8 7.2 8.6-2.9 14.4-10.2 15.6-19.1.8-5.7-8.2-5.9-9-.2-.8 5.7-5.7 10.3-11.3 11.2-7.1 1.2-13.9-2.8-19.4-6.8-4.6-3.4-9.3 4.3-4.7 7.7z"/><path d="M395 315.8c-3.8 118.5-3.4 237.1 1.3 355.5 1.3 33.1 3 66.1 4.9 99.2.3 5.7 9.3 6 9 .2-7-118.3-9.9-236.9-8.4-355.4.4-33.1 1.1-66.2 2.2-99.3.2-5.8-8.8-6-9-.2zm-14.9-11.3c-1.8 10.2-2.5 20.4-1.9 30.7.3 5.7 9.3 6 9 .2-.5-9.5-.1-19 1.5-28.3 1-5.6-7.7-8.3-8.6-2.6zm8.6 454.4c-.3-14.7-.7-29.4-1-44.1-.1-5.8-9.1-6-9-.2.3 14.7.7 29.4 1 44.1.2 5.8 9.2 6 9 .2z"/><path d="M373.3 367.5c2.6-6.1 11.8-7 16.1-2.5 4 4.2 10.5-2 6.5-6.2-9.4-9.9-26.1-6-31.3 6.1-2.1 5.3 6.5 7.9 8.7 2.6zm-8.9 151.2c4.1-3.7 8.8-8.3 14.5-9.2 4.1-.7 9 1 10 5.3 1.4 5.6 10.1 3.5 8.7-2.2-1.8-7.4-8.6-11.9-16-12.2-9.3-.5-17 6-23.5 11.8-4.2 3.9 2 10.4 6.3 6.5z"/><path d="M399.5 364.3c28.7-23.5 64.6-41.2 102.6-38.9 16.9 1 33.8 6 48 15.2 13.2 8.5 22.7 20.6 30.5 34.1 13.5 23.4 22.6 51.7 44.1 69.4 11.3 9.3 25.6 14.1 40.2 13.2 17.1-1 32.9-8.4 47.9-16 18.2-9.2 35.9-19.1 56.3-22.2 21.7-3.3 44.4.2 64 10 5.2 2.5 9.9-5.1 4.7-7.7-17.2-8.5-36.2-12.9-55.4-12.4-19 .5-36.7 6-53.8 14.2-28.8 13.9-64 38.2-95.2 16.4-11.4-7.9-19-20.1-25.6-32.1-7-12.8-13-26.2-20.5-38.8-7.9-13.3-17.5-25.2-30.2-34.1-14.2-9.9-31.1-15.5-48.2-17.6-42.7-5.2-83.6 14.4-115.9 40.8-4.2 3.7 2 10.2 6.5 6.5z"/><path d="M408.4 519.2c24.2-22.2 60.4-27.1 89.7-12.6 26.9 13.3 47 36.7 73 51.5 12.8 7.3 27 12.2 41.8 12.5 16.6.3 32.9-4.9 47.3-12.8 32.3-17.7 53.6-48 77.3-75.1 25.1-28.8 59.1-58.2 100.2-52.7 5.7.8 5.9-8.2.2-9-35-4.7-67.7 15.2-91.6 39-26.5 26.4-46.5 59.7-77.2 81.7-14.1 10.1-30.6 18-48 19.7-15.8 1.5-31-2.8-44.6-10.5-26.4-14.9-46.8-38.8-74.2-52.2-32.9-16-72.9-10.8-100 14.1-4.4 3.9 1.8 10.4 6.1 6.4z"/></svg>
+ data/FlameTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M473.7 444.1c4.4 13.3 8.9 26.6 13.3 39.9 17.2-35.7 25.2-77.4 22.7-118.4 8.5 1 12.5 12.7 14.6 22.5 9.3 44.2 15.4 89.5 18 135 .4 6.8 2.8 15.9 8.5 15.2 2-.2 3-9.3 4.5-10.8 16.6-16.4 28.3-52.3 30.8-77.7-1.5 14.7 25.3 50.2 26.9 90.7 1.1 28.1-4.8 59.7-16.6 84.2-18.9 39.2-58.2 69.5-97.9 64.7-92.9-11.3-63.7-186.8-24.8-245.3z" opacity=".7" fill="#ff3e29"/><path d="M485.1 672.5c-9.1 1-18-5.4-23.2-14.1-5.2-8.7-7.3-19.4-8.5-29.9-4.2-37.8 2.6-77.2 19.1-110.2 1-2 2.3-4.2 4.3-4.6 1.7-.3 3.3.9 4.7 2 5.1 4 10.2 8 15.3 11.9 8.6-6.2 10.9-19.2 13.8-30.4 2.9-11.2 9.2-23.8 19.4-24.1-1.7 21.7-3.5 43.3-5.2 65-.6 7.9-1.2 16.3 1.7 23.5 2.9 7.2 10.8 12.4 16.9 8.8 3.7-2.1 5.8-6.6 8.3-10.3 5.1-7.4 12.9-12.2 21.1-13.1 12.8 30.9 9.5 69.8-8.3 97.3S515.3 686.4 486 681c-8.8-1.6-17.6-5.1-24-12.3s-9.7-18.5-6.3-28" opacity=".7" fill="#ffc000"/><path d="M487.9 664.1c1.7 5.8-5.6 10.8-10.4 8.2-4.8-2.7-6.8-9.3-7.5-15.4-3.9-32.6 15.4-62.5 35.4-85.9 17.6 13.8 31.4 36 32.5 60.5 1.2 24.6-12.6 50.5-33.4 56-8.1 2.1-17.3.9-23.5-5.6" opacity=".7" fill="#ff0"/><path d="M501.6 324.2c.8 53.8-6.1 107.5-20.6 159.4 2.4.3 4.8.6 7.2 1-1.1-18.8-6-37.2-14.7-53.9-1.2-2.3-5.1-2.4-6.3 0-19.2 40.2-30.9 83.7-34.8 128-2 22-2.5 44.6.3 66.6 2.4 19.5 7.7 39.5 20.1 55.2 12.2 15.4 31.8 26.4 51.7 21 4.5-1.2 2.6-8.3-1.9-7-16.8 4.6-33-5.1-43.4-17.7-12.4-15-17.4-35.3-19.5-54.2-4.5-40.6 0-82.9 10-122.3 5.8-22.7 13.7-44.8 23.8-65.9h-6.3c8.1 15.6 12.7 32.7 13.7 50.2.2 4 6 5.1 7.2 1 14.7-52.4 21.6-106.9 20.9-161.3-.1-4.8-7.4-4.8-7.4-.1z"/><path d="M498.9 323.6c22.4 50 44.9 101.6 46.6 157.2.5 15.7-.7 31.5-4.1 46.8-1 4.6 6 6.5 7 1.9 12.3-56.3-2.8-113.5-24.1-165.6-6.1-14.8-12.6-29.4-19.1-44-1.9-4.3-8.2-.6-6.3 3.7z"/><path d="M549.1 546.3c24.9-28.8 40.3-65.1 47.7-102.2.8-4.2-4.2-6.1-6.7-2.8-4.8 6.5-1.7 15.3 1.4 21.8 4.1 8.4 7.5 17 10 26.1 5.5 19.4 7.6 39.7 7 59.8-1.2 38.7-12.9 78.3-35.5 110-5.7 8-12.3 17-21 21.9-11 6.2-21.7-1.8-30.2-8.5-3.7-2.8-8.8 2.3-5.2 5.2 7.7 6 16.3 12.8 26.6 13 9.4.2 17.2-5.8 23.4-12.3 13.3-13.8 23.5-30.9 31.1-48.4 16.8-38.7 22.3-82.1 15.2-123.7-1.9-11-4.7-21.8-8.7-32.3-1.9-4.9-4.1-9.7-6.3-14.5-2-4.2-4.5-10.2-1.4-14.4-2.2-.9-4.4-1.9-6.7-2.8-7.1 35.8-21.7 71.1-45.8 98.9-3.1 3.6 2 8.8 5.1 5.2z"/><path d="M471.7 653.7c-3.5-15.3 5.4-29.9 15.2-40.9 9.4-10.5 19.9-20.2 25.6-33.4-1.7.4-3.3.9-5 1.3 23.7 13.3 30.3 48.9 18.1 72-2.2 4.1 4.1 7.8 6.3 3.7 14-26.5 6.5-66.6-20.8-81.9-1.5-.9-4.2-.5-5 1.3-6.3 14.7-18.8 24.5-28.6 36.8-9.6 12.2-16.5 27.4-12.9 43.1 1.1 4.5 8.2 2.6 7.1-2zm-16.2-47.9c-5.3-22.7 3.1-45.4 13.7-65.3 2.6-4.8 5.3-9.6 8.1-14.3 2.5-4.2 6-9.3 10.7-4.6 6.8 6.8 6.2 18.1 14 24.4 2 1.6 5.4 1.3 6.1-1.6 3.5-14.3 10.4-27.5 20.8-38-2.1-.9-4.2-1.7-6.2-2.6.2 12.5.3 25 .5 37.5.1 4.7 7.3 4.7 7.3 0-.2-12.5-.3-25-.5-37.5 0-3.1-4-4.8-6.2-2.6-11.3 11.3-18.9 25.7-22.7 41.2 2-.5 4.1-1.1 6.1-1.6-8.8-7.1-7-21.6-17.8-27.3-11.9-6.4-19.2 10.2-23.7 18.2-12.9 23-23.4 49.3-17.2 76 1.1 4.6 8.1 2.7 7-1.9z"/><path d="M539.1 582.2c8.4.7 14-6.8 19.8-11.7 2.5-2.1 5.8-4.5 8.9-2.2 3.7 2.8 4.1 9.5 4.2 13.6.3 13.3-2.1 27.1-5.1 40.1-3.1 13.7-7.6 27.1-13.4 39.9-1.9 4.2 4.4 8 6.3 3.7 10-22 16.2-45.5 18.6-69.6.9-9.3 2.3-20.4-2.4-28.9-3.7-6.7-11.3-8.7-17.9-5-6 3.4-11.5 13.4-19 12.8-4.7-.4-4.7 6.9 0 7.3zm27.8-138.5c.8-11.4 3.5-22.4 7.7-33 1.8-4.3-5.3-6.2-7-1.9-4.5 11.2-7.1 22.9-8 34.9-.3 4.7 7 4.6 7.3 0zM437.5 329.5c1.6 7.6 3.1 15.2 4.7 22.8 1 4.6 8 2.6 7-1.9-1.6-7.6-3.1-15.2-4.7-22.8-1-4.6-8-2.6-7 1.9zm-28.9 142.4c6.1 8.8 8.9 19.1 8.7 29.8-.1 4.7 7.2 4.7 7.3 0 .2-11.9-3-23.6-9.7-33.5-2.7-3.8-9-.2-6.3 3.7z"/></svg>
+ data/FlowerTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0,.st2{opacity:.7;fill:#ff8400}.st2{fill:#7ebf15}</style><path class="st0" d="M400.1 350.5c-2.6-4 2.2-8.6 6.4-11 19.5-11 39-22.1 58.6-33.1 1.4-.8 2.9-1.6 4.4-1.6 3.6 0 5.7 3.9 7 7.2 6.7 16.4 13.3 32.8 20 49.3 6.2 15.3-30 23.1-41.2 20.6-11.1-2.4-49.3-22-55.2-31.4zm200.8 7.5c-13.5-17.4-29-33.1-46-46.7-1.8-1.4-3.7-2.9-5.8-3.4-11.2-2.9-25 18.5-29.7 30.5l-.7-.7c-3 6.7-5.4 13.8-7.1 21-.6 2.5-1 5.3.5 7.4 1.4 1.8 3.8 2.3 6 2.7 4.6.8 9.1 1.6 13.7 2.4 8.9 6.3 23.2 15.2 29.5 17.2 9.7 3 42.4-4.2 44.4-18.5.5-4.5-2.2-8.5-4.8-11.9zm-138.3 80.8c1.9 2.2 4.4 4.5 4.4 7.4 0 2.4-1.5 4.4-2.9 6.3-8.6 11.1-17.3 22.2-25.9 33.3-3.5 4.5-7.3 9.2-12.5 11.4-12.3 5.1-25.1-5.6-33.5-15.9-9.1-11.3-17.4-23.4-24.6-36-2-3.5-3.9-7.2-4.2-11.2-.8-10.8 10-18.6 20-22.7 15.2-6.3 45-15.7 61.4-9 19.3 7.9 4.8 21.2 17.8 36.4zm14.7 67c-1.1 6.5-2.2 13.3-.2 19.5 4.3 13.6 20.4 17.6 33.7 17.7 24.2.1 50-6.2 66.4-25.5.9-1 1.7-2.2 1.9-3.5.2-1.5-.6-2.8-1.2-4.1-11.2-20.8-21.3-44.5-34.9-63.4-19.3 16.7-26 1.7-45 5.6-19.2 4-17.7 36.3-20.7 53.7zM616 483.5c13-7.6 26.6-15.6 34.8-28.1s9.4-30.9-1.6-41.2c-4.7-4.4-11-6.8-17.2-9-25.3-9-54.7-23.3-66.9 5.8-8.5 20.3 3 24.1 17.5 37.9 2.9 2.8 32.9 34.9 33.4 34.6z"/><path d="M517 376.5c-15.4 2.1-29.9 9.7-40.4 21.1-6 6.5-10.9 14.8-10.5 23.6.4 10.2 8.2 19.2 17.6 23.3s20.1 4 30.3 2.3c14.5-2.5 29-8.9 38-20.5s11.3-29.2 2.7-41.1C544 370.7 523 369.5 505 370.7" opacity=".7" fill="#ffd900"/><path class="st2" d="M479 586.1c3.6 63.8 10 127.5 19 190.8 6.1-5.3 12.1-10.7 18.2-16.1 10.2-24.6 23.3-48 39-69.6-3.3-2.7-6.7-5.3-10-8-12.8 18.5-24.5 37.9-34.9 57.8-22.9-60-16.6-122-16.7-184.5-16.9-4.4-15.3 18.4-14.6 29.6z"/><path class="st2" d="M436.8 628.4c-17.1-20.6-24.9-48.5-21-74.9-2.7 11.8-5.4 23.5-8 35.2-26.8-23.9-64-35.7-99.7-31.6 13.6 25.6 32.8 48.3 55.8 65.9-16.6 9.8-30.4 24.3-39.1 41.5-2.4 4.7-4.5 10.1-2.7 15.1 3.3 9.5 16.7 9.6 26.4 7 31.5-8.4 60.3-27 81-52.2 22.7 28.9 42.3 60.3 58.3 93.4.9-7.3 1.7-14.7 2.5-22.1m92.1-78.9c-8.4 3-16.2 7.8-22.8 13.9-7 6.4-12.8 15.2-12.3 24.7.9 15.5 18.9 25.2 34.2 23.3s28.3-12.1 40.4-21.8c-6.6-3-12.1-8.3-15.4-14.7-1.5-2.9-2.8-6.3-5.8-7.6-5.5-2.5-11.7 4.2-17.6 2.5-4.4-1.2-6.2-6.9-4.9-11.2 1.3-4.4 4.7-7.7 8-10.8"/><path class="st0" d="M603.8 613.8c-10.1.6-17.9 12.4-14.5 21.9 9.1-1.1 20.2-1.2 25.4 6.4 3.8 5.5 5.4 15 12 14.3 3.4-.3 5.7-3.6 7.2-6.7 3.9-8 6-16.8 6.2-25.6 0-1.8 0-3.8-1.1-5.3-1.3-1.9-3.6-2.6-5.8-3.2-13.4-3.6-28.7-6.3-40.4 1.2"/><path d="M463.7 403.4c-34-14.2-74.5-9.1-104.1 12.8-3.3 2.5-.1 8.1 3.3 5.6 28.4-21.1 66.4-25.8 99.1-12.2 3.8 1.7 5.5-4.6 1.7-6.2z"/><path d="M352.5 410.3c2.4 40.1 24.5 77.6 58.6 98.9 3.5 2.2 6.8-3.4 3.3-5.6-32.1-20.1-53.1-55.5-55.4-93.3-.3-4.1-6.8-4.2-6.5 0z"/><path d="M413.6 511.8c22.8-10.2 41.1-28.7 51.1-51.6 1.7-3.8-3.9-7.1-5.6-3.3-9.6 22-26.9 39.4-48.8 49.2-3.8 1.8-.5 7.4 3.3 5.7zM501 350c-5-14.3-10.1-28.6-15.1-43-1.6-4.5-2.8-10.8-6.6-14-4.2-3.5-8.8-1.2-13 1.1-27.1 15.1-54 30.5-81 45.8-3.6 2.1-.4 7.7 3.3 5.6 22.6-12.8 45.2-25.5 67.8-38.3 4.8-2.7 11.8-8.7 17.2-8.4 2.8.1 2.6.7 3.5 3 .5 1.3.9 2.7 1.4 4 1 3 2.1 6 3.2 9 4.3 12.3 8.6 24.6 13 37 1.4 3.8 7.7 2.2 6.3-1.8z"/><path d="M380.1 345.5c17.4 24.4 44.4 40.2 74.2 43.3 4.1.4 4.1-6.1 0-6.5-27.3-2.9-52.7-17.8-68.6-40.1-2.4-3.3-8-.1-5.6 3.3zm131.3 11.9c2.2-11.6 6.4-22.6 12.7-32.6 1.7-2.7 20.2-27.8 24.1-20.6 2 3.7 7.6.4 5.6-3.3-7.2-13.4-24 5.6-28.8 11.5-10.1 12.6-16.9 27.4-19.8 43.2-.8 4.2 5.4 5.9 6.2 1.8z"/><path d="M547.8 302.1c20.4 8.6 38.4 23 51.3 40.9 3 4.2 5.8 8.6 8.3 13.2 2.4 4.4 8.2 12.9 5.1 17.8-2.9 4.6-11.2 7.2-15.8 9.6-6 3.1-12 6.2-18.1 9.4-3.7 1.9-.4 7.5 3.3 5.6 7.2-3.8 14.5-7.5 21.7-11.2 5-2.6 11.4-5 14.5-10 3.3-5.3 1.2-11.1-1.2-16.2-2.7-6-5.8-11.8-9.5-17.2-14.1-21.4-34.4-38-58-48-3.7-1.8-5.4 4.5-1.6 6.1zm-58 156.8c5.5-1 3.8-9.3-1.5-9.2-2.8.1-4.5 2.3-5.9 4.4-2.9 4.7-5.2 9.9-7.4 14.9-4.2 9.5-7.8 19.3-10.4 29.4-2.5 9.3-5.2 19.6-2.9 29.2 3.6 15.1 18.7 23.7 32.9 26.8 15.2 3.3 30.5.2 44.9-4.8 17-5.8 33.8-13.9 48-25 3.3-2.6-1.3-7.1-4.6-4.6-12.4 9.7-27.3 16.9-42.1 22.2-13.9 5-29 9-43.8 6-7.6-1.6-15.3-4.5-21.1-9.7-7.4-6.6-9.4-15.3-8-24.9 1.4-9.7 4.4-19.3 7.7-28.5 1.9-5.3 4-10.5 6.3-15.6 1.1-2.4 2.2-4.7 3.4-7 .3-.6 5.4-10.5 2.8-10-4.1.9-2.4 7.1 1.7 6.4zm53.4-16.3c14.8 25.3 31.4 49.4 49.6 72.3 2.6 3.3 7.2-1.3 4.6-4.6-17.8-22.5-34-46.2-48.6-71-2.1-3.6-7.7-.3-5.6 3.3z"/><path d="M567.6 394.3c34.8-.5 84.2.9 97.9 40.8 1.3 3.9 7.6 2.2 6.3-1.7-6-17.4-20.2-30-36.8-37.1-21.2-9-44.8-8.8-67.3-8.5-4.3.1-4.3 6.6-.1 6.5zm-5.2 50c12.8 14.1 25.7 28.3 38.5 42.4 2.8 3.1 7.4-1.5 4.6-4.6-12.8-14.1-25.7-28.3-38.5-42.4-2.9-3.1-7.4 1.5-4.6 4.6z"/><path d="M601 500.5c17.1 8.4 35-7.8 45.9-19.4 13-13.8 22.5-30.5 27.9-48.6 1.2-4-5.1-5.7-6.3-1.7-4.6 15.4-12.2 29.8-22.8 42-8.7 10-26.6 29.5-41.5 22.2-3.7-1.9-7 3.7-3.2 5.5zm-87.2-132.8c-15.5 2.3-30.1 9.6-41.1 20.8-10.9 11.1-19.4 27.5-12.2 42.8 6.5 13.7 22.1 22 36.5 24.4 15.4 2.6 31.3-.5 44.3-9.2 3.5-2.3.2-7.9-3.3-5.6-11.3 7.5-25 10.7-38.5 8.7-12.5-1.9-26.5-8.5-32.7-20.1-7.4-14 2.6-29.3 12.8-38.7 9.9-9.2 22.5-14.9 35.8-16.8 4.2-.6 2.5-6.9-1.6-6.3zm31.6 11.8c18.1 11.5 18.5 37.6.8 49.6-3.5 2.3-.2 8 3.3 5.6 21.9-14.8 21.6-46.6-.7-60.8-3.7-2.3-7 3.4-3.4 5.6z"/><path d="M521.5 386v2.5c0 1.7 1.5 3.3 3.2 3.2s3.2-1.4 3.2-3.2V386c0-1.7-1.5-3.3-3.2-3.2-1.7 0-3.2 1.4-3.2 3.2zm-29.6 20.9c4.2 0 4.2-6.5 0-6.5s-4.2 6.5 0 6.5zm37.9 5.1c4.2 0 4.2-6.5 0-6.5s-4.2 6.5 0 6.5zm-12.7 20.2c4.2 0 4.2-6.5 0-6.5-4.1 0-4.1 6.5 0 6.5zm-99.6 14.4c5.9-4.1 11.9-8.3 17.8-12.5 3.4-2.4.2-8-3.3-5.6-5.9 4.1-11.9 8.3-17.8 12.5-3.4 2.4-.1 8 3.3 5.6zm22.4-90.9c3.4 2.5 6.7 5.1 10.1 7.6 1.4 1.1 3.6.2 4.4-1.2 1-1.7.2-3.4-1.2-4.4-3.4-2.5-6.7-5.1-10.1-7.6-1.4-1.1-3.6-.2-4.4 1.2-.9 1.6-.2 3.3 1.2 4.4zm116.9-2.1c3.4-2.5 6.7-5.1 10.1-7.6 1.4-1 2.1-2.8 1.2-4.4-.8-1.4-3-2.2-4.4-1.2-3.4 2.5-6.7 5.1-10.1 7.6-1.4 1-2.1 2.8-1.2 4.4.8 1.4 3 2.2 4.4 1.2zm-27.8 136v12.6c0 4.2 6.5 4.2 6.5 0v-12.6c0-4.2-6.5-4.2-6.5 0zm58.9-62.4c4.2 0 4.2-6.5 0-6.5s-4.2 6.5 0 6.5zM474.4 557.7c-1.5 31.6-.8 63.3 2.4 94.7 1.5 15 3.6 29.9 6.1 44.7 1.5 8.9 2.1 25.1 14.1 26.1 4.2.3 4.1-6.2 0-6.5-5.4-.5-6-11.3-6.7-15.1-1.2-6.6-2.3-13.2-3.3-19.8-2.1-14-3.7-28-4.9-42-2.2-27.3-2.6-54.8-1.3-82.1.3-4.2-6.2-4.1-6.4 0z"/><path d="M500.8 551.8c-7.7 31.7-11 64.4-9.6 97 .2 4.2 6.7 4.2 6.5 0-1.3-32.1 1.8-64.1 9.4-95.3 1-4.1-5.3-5.8-6.3-1.7zm-7.7 122.3c2.6 23.3 7 46.4 13.4 69 1.1 4 7.4 2.3 6.3-1.7-6.2-22-10.6-44.5-13.1-67.3-.6-4.1-7.1-4.2-6.6 0zm-17.8 6l18 103.5c.7 4.1 7 2.4 6.3-1.7l-18-103.5c-.7-4.2-7-2.4-6.3 1.7z"/><path d="M431.4 615.7c17.3 21.8 32.2 45.4 44.5 70.3 1.9 3.8 7.5.5 5.6-3.3-12.5-25.5-27.8-49.4-45.5-71.6-2.6-3.3-7.2 1.3-4.6 4.6zm-2.6 32.9c12.8 14.4 23.6 30.2 32.5 47.2 1.9 3.7 7.5.4 5.6-3.3-9.1-17.5-20.4-33.8-33.5-48.6-2.8-3.1-7.4 1.5-4.6 4.7z"/><path d="M435.1 615c-11.9-21.4-16.4-45.8-13.2-70 .4-2.9-3.7-4.1-5.5-2.3-11.6 11.3-16.6 27.3-13.9 43.3 1.8-1 3.6-2.1 5.4-3.2-25.1-25.2-59.9-39.3-95.4-38.7-4.2.1-4.2 6.6 0 6.5 33.9-.5 66.9 12.9 90.8 36.8 2.5 2.5 6-.1 5.4-3.2-2.4-13.6 2.3-27.4 12.2-37-1.9-.8-3.7-1.5-5.5-2.3-3.3 25.3 1.8 51 14.1 73.2 2 3.9 7.6.6 5.6-3.1zm-137.3-58.6c6.3 30 26.1 56.1 53.2 70.3 3.7 1.9 7-3.7 3.3-5.6-25.8-13.5-44.3-38-50.2-66.4-.9-4.2-7.2-2.4-6.3 1.7z"/><path d="M354.5 622.8c-21.9 6.7-37.7 26-40.4 48.6-.5 4.1 6 4.1 6.5 0 2.3-19.7 16.8-36.6 35.6-42.4 4-1.2 2.3-7.4-1.7-6.2zM316 684.9c45.5 16.4 85.9-18.8 116.2-48.1 3-2.9-1.6-7.5-4.6-4.6-28.6 27.7-66.7 62-109.9 46.4-3.9-1.4-5.6 4.9-1.7 6.3zm191.1 73.3c4.7-28.6 18.4-54.9 39.3-75 3-2.9-1.6-7.5-4.6-4.6-21.6 20.9-36 48.3-41 77.9-.6 4.1 5.7 5.8 6.3 1.7zm14.7-4.5c10.4-18.4 20.8-36.7 31.2-55.1 2.1-3.6-3.5-6.9-5.6-3.3-10.4 18.4-20.8 36.7-31.2 55.1-2.1 3.6 3.5 6.9 5.6 3.3z"/><path d="M580.2 617.3c-14.9 5-28.6 15-35.2 29.7-5.7 12.7-4.7 28.1 3.2 39.7 8.8 13 24.4 17.2 39.3 13.6 17.9-4.4 30.9-18.4 42.7-31.7 2.8-3.1-1.8-7.7-4.6-4.6-9.9 11.1-20.4 23.2-34.8 28.5-13.2 4.8-28.6 3.2-37-9.1-6.9-10.1-7.8-23.6-2.5-34.6 6-12.4 17.8-21 30.6-25.2 3.9-1.4 2.3-7.6-1.7-6.3z"/><path d="M591.3 615.2c-5.7 4.9-11.8 10.9-10.9 19 .7 6.4 5.5 11.3 12.1 10.9 3.5-.2 6.6-1.8 9.9-2.8 4.6-1.4 6.1.5 7.1 4.8 1.2 4.7 2.3 10.6 8.5 10.3 4.2-.2 4.2-6.7 0-6.5-1.7.1-3.2-9.3-4.2-11-2.1-3.6-5.7-5.2-9.7-4.7-4.3.5-11.8 5.8-15.6 2.3-6.3-5.8 3.3-14.2 7.3-17.7 3.3-2.7-1.3-7.3-4.5-4.6z"/><path d="M590 620.6c11.8-9.2 28.4-11.3 42.1-5.2 3.8 1.7 7.1-3.9 3.3-5.6-16.7-7.4-35.6-5-50 6.2-3.3 2.5 1.3 7.1 4.6 4.6zm50.8 2.9c1.5 16.5-5 32.3-17.7 42.9-3.2 2.7 1.4 7.3 4.6 4.6 13.8-11.6 21.2-29.5 19.6-47.5-.3-4.2-6.8-4.2-6.5 0z"/></svg>
+ data/GearTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st2,.st3{fill:#6f6f75}.st3{opacity:.7}</style><path d="M666 455.4c6.8-6.8 19.7-10.1 19-19.7-.2-3.5-2.5-6.5-4.7-9.3-6.2-7.9-12.4-15.7-18.6-23.6-10.2 10.2-26.9 12.8-39.6 6.1-12.7-6.7-20.3-22.1-17.9-36.5 1.6-9.8 7.3-19.5 4.5-29-3.8-13.3-21.8-16.6-34.5-11.5-12.7 5.1-22.6 15.6-34.8 21.7-12.2 6.1-21.1 3.7-28-8.3-5.7-9.9-11.7-23.5-22.2-27.8-3.4-1.4-7.3-1-11-.4-9.8 1.4-19.6 2.8-29.4 4.1 6.8 15.8-4.3 34.9-19.7 42.1-22.4 10.5-72.2-7.5-73.2 34.1-.5 18.7 20.4 36.6 11.6 53-4.2 7.9-13.5 10.9-21.1 15.4-21 12.4-31.1 41-22.7 64.2 19.5-12 47.6.7 56 22.2 8.5 21.5 0 47.3-16.3 63.6 11.2 12.6 22.4 25.2 33.7 37.8 11.6-13.8 31-20.2 48.3-16.2s32 18.5 36.5 36c.8 2.9 1.4 6.1 3.5 8.2 2 1.9 4.8 2.5 7.5 2.9 11.2 1.6 22.7.9 33.6-2-1.6-19 9.5-38.4 26.4-46.4 17-8 38.7-4.1 51.9 9.4 2.1 2.2 4.2 4.6 7 5.6 10.4 3.7 17.2-14 28.2-14.7-6-13.7-10.4-28.6-9.1-43.6s9.5-29.9 22.9-36.1c7.4-3.4 35.5 5 41.5-.7 12.1-11.3 15.8-49.2-24-54.9-16.2-2.2-17-34-5.3-45.7zm-158.1 64.8c-2 6-4.7 12-9.5 16.1s-11.9 5.8-17.3 2.6c-6-3.5-7.8-11.4-7.9-18.5-.1-12.8 4-25.6 11.3-36l1.3.3c7.5-5.3 18.7-.1 22.6 8.2 3.9 8.5 2.4 18.5-.5 27.3z" opacity=".7" fill="#b5b4bf"/><path class="st2" d="M398.2 340.3c.6.6 1.3 1.2 1.9 1.8l.6-.3-2.5-1.5zm12.4 16.5c-2.7-5.4-6.3-10.3-10.5-14.7-4.4 2.6-8.8 5.1-13.2 7.7-3 1.7-3.6 5.8-1.1 8.2 5.4 5.4 13.8 7.8 21.3 6.2 3.3-.6 5-4.3 3.5-7.4z" opacity=".7"/><path class="st3" d="M514 314.9c-3 7.8-3.5 17.1 1 24.1 4.6 7 15.5 9.8 21.6 4.1-6.7-4.5-11.2-12.2-11.9-20.2-.3-3-.1-6.2-1.4-8.9s-4.9-4.7-7.4-3m108.6 35.2c-8.7 12.3-13 27.6-11.7 42.6 10.3-9.1 16.6-22.6 17-36.4m57.4 94c-12 4.6-19.3 18.9-16.2 31.4 7-12 18.7-21 32.1-24.6-2.3-4.9-5.4-9.4-9.1-13.2"/><path class="st2" d="M668.1 562.3c-6.7-3.5-16 0-18.9 6.9 9.5-.6 19.2 1 28.1 4.6 2.9-3.3 4.3-7.9 3.7-12.3"/><path class="st3" d="M572.4 633.7c14.4 2.3 25.2 17.8 22.5 32.1h-12c-.2-11.3-5.3-22.5-13.8-30m-202.4-71.6c.2 8.3.2 17-3.7 24.3-3.9 7.3-13.2 12.4-20.7 8.8 9.6-12.1 19.2-24.3 28.7-36.4m-56-106c.1 2.7.2 5.5.3 8.2 9.7 2.7 20.7-.1 27.9-7.2-10.3.2-20.6-4.4-27.4-12.2M500.1 469c6.2 10 12.4 20.4 15.1 31.9 2.7 11.5 1.6 24.5-5.6 33.9-3.1 4-7.2 7.3-9 12.1 20 1.2 39.5-15.1 41.7-35 2.3-19.9-13-40.2-32.8-43.5m149.1 96.3c-8.8.2-16.6 8.5-16.3 17.3 15.6-1.4 31.3-2.2 47-2.3"/><path d="M461.6 399c-7.4.9-14.8 1.4-22.2 1.5-2.7 0-5 1.9-5.7 4.4l-.9 3.3c-.1.5-.3.9-.5 1.4-15.3 28.2-32.3 55.5-50.7 81.8-2.7 3.9 0 9.3 4.8 9.4 5.9.1 11.8.6 17.6 1.4 3.4.5 6.4-2.1 6.7-5.5.2-2.6 1.2-5.4 2.2-7.9 12.8-29.5 31.1-56.6 53.5-79.6 4-4.1.7-10.9-4.8-10.2z" opacity=".7" fill="#e6e4f2"/><path d="M341.8 401.8c6.9-20.4 22.2-36.4 41.8-44.9 6.8-3 .9-13-5.9-10-22.4 9.8-39.3 28.8-47.1 51.9-2.5 7 8.8 10.1 11.2 3z"/><path d="M375.3 354.1c7.5 19.6 29.8 24.7 47.8 16.8 17.2-7.5 35.1-26.6 25.1-46.3-3.4-6.7-13.4-.8-10 5.9 6.4 12.6-9.2 24.9-19 29.5-11.1 5.2-27.6 4.2-32.7-9-2.7-6.9-13.9-3.9-11.2 3.1z"/><path d="M378.6 358.5c8.6-6.3 17.8-11.6 27.6-15.8-2.8-1.2-5.7-2.3-8.5-3.5 2 10.2 8.3 18.7 17.3 23.7 6.5 3.6 12.4-6.4 5.9-10-6.6-3.7-10.5-9.4-12-16.8-.8-4.1-5.4-4.8-8.5-3.5-9.8 4.2-19 9.4-27.6 15.8-6 4.5-.2 14.5 5.8 10.1zm69.9-29.5c14.2-6.7 29.7-11.2 45.4-12.3 3.8-.3 5.9-1.1 7 2.7.8 2.9.6 6.4 1.3 9.4 1.3 6.1 3.9 12 7.9 16.8 7.6 8.9 20.6 12.6 31.8 9 12-3.9 19.5-14.8 20.6-27.1.7-7.4-10.9-7.4-11.6 0-1.2 12.8-14.9 20.8-26.5 14.9-5.8-2.9-9-8.6-10.6-14.6-1.3-5.1-.5-11.2-2.9-16-5.1-10.2-19.9-6.5-28.7-5.2-13.7 2.2-26.9 6.5-39.5 12.5-6.8 3.1-.9 13.1 5.8 9.9z"/><path d="M503.7 317c3.5-.6 15-4.1 17-1.3 1 1.5.6 6.2.9 8.2.5 3.1 1.2 6.1 2.2 9.1 2.7 7.7 9.3 23.5 19.8 17.4 6.5-3.7.6-13.8-5.9-10-.4.2-.8.5-1.2.7l4.5-.6c-4.3-.9-7-13.2-7.7-16.6-1-4.8-.2-10.5-2.8-14.9-5.8-10.1-21.1-4.5-29.9-3.1-7.3 1.1-4.2 12.3 3.1 11.1zm59.8 13.2c9 2 17.9 4.2 26.7 6.7 4 1.1 8 2.3 12 3.5 1.6.5 10.8 2.3 11.3 3.8.4 1.1-3.4 6.7-3.9 8-1.4 3.6-2.4 7.2-3 11-1.1 6.9-1.3 13.9-.3 20.8 1.9 12.3 8.9 22.7 20.8 27 11 4 22.8 1.9 32-5.3 5.9-4.6-2.4-12.8-8.2-8.2-8 6.3-21.3 4.9-28-2.8-8.4-9.6-7-27.5-2.6-38.6 2-4.9 6.2-9.3 4.8-15-1.3-5.5-6.7-7.7-11.5-9.4-15.4-5.2-31.2-9.4-47.1-12.9-7.2-1.4-10.3 9.7-3 11.4z"/><path d="M612.3 346c6.4 2.2 12.2 5.4 17.7 9.3-.9-2.2-1.8-4.4-2.7-6.5-4.1 11-10 22.7-11.9 34.3-1.4 8.5 1.3 17.3 9.2 21.5 6.6 3.5 12.5-6.5 5.9-10-7.3-3.9-2.7-14-.5-19.8 2.8-7.6 5.7-15.3 8.5-22.9 1-2.6-.7-5.1-2.7-6.5-6.3-4.6-13.1-8-20.5-10.5-7-2.5-10 8.7-3 11.1zm39 53.6c17.1 9.8 30.7 24.9 38.3 43.1.9-2.2 1.8-4.4 2.7-6.5-7.2 5.4-15 10.4-21.7 16.5-5.8 5.3-7.1 11.8-7.7 19.4-1.1 13.5 1.4 33.5 19.7 30.6 7.4-1.1 4.2-12.3-3.1-11.2-8 1.2-5.4-22.3-4-26.1 1.6-4.4 6.5-7.1 10.1-9.8 4.2-3.1 8.3-6.3 12.5-9.4 1.9-1.4 3.7-4 2.7-6.5-8.8-21.1-23.7-38.6-43.6-50-6.5-3.9-12.4 6.2-5.9 9.9z"/><path d="M688.5 444.2c1.9 2.4 3.4 5.8 5.5 8 .2 1.8 1.1 2.4 2.5 1.7-.6.4-1.2.7-1.8 1.1-3.5 3-8 5-11.7 7.8-5.6 4.4-9.6 8.6-10.3 15.9-1.3 13.3 7.4 25.1 20.3 28 7.3 1.6 10.4-9.5 3.1-11.2-6-1.3-10.3-4.9-11.6-11-1.1-5.3.3-8 4.3-11.4 5.2-4.4 16.5-7.9 18.6-15 2.1-7.4-6.5-16.9-10.7-22.1-4.7-5.8-12.8 2.5-8.2 8.2zm-358.9-36.1c10 8.9 25.1 22.1 19 37.2-2.3 5.8-7.4 10.1-12.4 13.5-5.2 3.5-13.6 9.5-20.1 6.4-6.7-3.1-12.6 6.9-5.9 10 16.5 7.7 39.6-7.7 47.5-22.3 11.3-20.8-5.2-39.9-20-53-5.5-4.9-13.7 3.3-8.1 8.2z"/><path d="M312.9 470.8c2.2-7.4 4.9-14.5 8.2-21.5-2.6.7-5.3 1.4-7.9 2.1 13.4 8.8 30.2 9.4 44.4 2.2 6.7-3.4.8-13.4-5.9-10-10.6 5.4-22.8 4.3-32.7-2.2-2.5-1.6-6.6-.6-7.9 2.1-3.8 7.8-6.9 15.9-9.4 24.2-2.1 7.2 9.1 10.3 11.2 3.1z"/><path d="M304.8 470.8c1.4 24.8 3.9 49.4 7.5 73.9.7 4.6 6.8 5.2 9.7 2.6 14.6-13.5 37.2-5 43.2 12.7 6.4 18.7-5.1 36.7-21.9 44.7-6.7 3.2-.9 13.2 5.9 10 23.3-11.1 36.4-38.2 25.3-62.6-10.7-23.4-41.5-30.6-60.7-13 3.2.8 6.5 1.7 9.7 2.6-3.4-23.5-5.8-47.1-7.1-70.8-.4-7.6-12-7.6-11.6-.1z"/><path d="M334.2 589.3c1.7 7.2 3.9 14.1 6.7 20.9 3.2-1.9 6.5-3.8 9.7-5.6-.4-.4-.7-.8-1.1-1.2-5.1-5.4-13.3 2.8-8.2 8.2.4.4.7.8 1.1 1.2 3.7 4 12-.1 9.7-5.6-2.8-6.8-5.1-13.8-6.7-20.9-1.7-7.3-12.9-4.2-11.2 3z"/><path d="M339.5 591.7c9.7-3 20-6.4 26.6-14.5 6.2-7.5 7.8-17 3.8-25.9-3-6.8-13-.9-10 5.9 6.1 13.6-14.5 20.6-23.5 23.4-7.1 2.1-4 13.3 3.1 11.1zm-1.8 15.6c9.3 29.3 33.6 52.2 63.5 59.4 2.9.7 6.5-.9 7.1-4 1.2-6.5 8.6-8.4 14.3-9.8 8-1.9 17.7-4.1 25.6-.8 12.9 5.2 14.6 22.6 15.7 34.6.6 7.4 12.2 7.5 11.6 0-1.6-18.3-5.9-41.1-26.5-46.6-10.4-2.8-22.6-.5-32.8 2.5-8.6 2.6-17.3 7.5-19.1 17 2.4-1.3 4.8-2.7 7.1-4-25.9-6.3-47.2-25.8-55.4-51.3-2.2-7.1-13.4-4.1-11.1 3z"/><path d="M443.4 646.8c5.6 12.7 7.4 26.4 5.9 40.1-.3 2.7 2 4.7 4.3 5.6 7.3 2.8 14.7 4.2 22.5 4.5 7.5.2 7.5-11.3 0-11.6-6.8-.2-13.1-1.6-19.4-4.1 1.4 1.9 2.8 3.7 4.3 5.6 1.8-15.9-1-31.4-7.4-46-3.2-6.7-13.2-.8-10.2 5.9z"/><path d="M452.8 686.1c24.1 23.4 59.2 10.8 87.1 3 7.2-2 4.1-13.2-3.1-11.2-23.1 6.5-55.5 19.7-75.8 0-5.3-5.2-13.5 3-8.2 8.2z"/><path d="M539.5 679.2c-.9-1.1.3-7.1.6-8.7.8-3.8 2.1-7.3 4-10.7 3.6-6.4 9.1-11.5 15.7-14.6 5.5-2.6 15-5.5 20.8-2.4 2.9 1.5 5.5 4.8 7.8 7 1.6 1.5 3.1 3.1 4.6 4.7.6.6 3.2 4.5 3.6 2.7.9-1.2 1.8-2.3 2.7-3.5-.3.1-.6.2-.8.4-6.8 2.9-1 12.9 5.9 10 12.6-5.3-6.7-21.7-10.9-25.5-4.4-4-8.5-7.6-14.6-8.2-6-.6-12.3.2-17.9 2-11.6 3.7-21.5 11.7-27.3 22.5-4.8 9-9.4 23.7-2.3 32.5 4.6 5.8 12.7-2.5 8.1-8.2z"/><path d="M558.3 641.3c8.4 9 14.1 19.7 17.2 31.6.6 2.4 3.1 4.3 5.6 4.3 16.5-.4 32.4-5.8 45.6-15.7 13-9.8 25-24.5 25.9-41.3.4-7.5-11.2-7.4-11.6 0-.7 13.6-12.5 26.2-23.2 33.5-10.9 7.4-23.5 11.6-36.6 11.9 1.9 1.4 3.7 2.8 5.6 4.3-3.5-13.8-10.4-26.2-20.2-36.7-5.2-5.6-13.4 2.6-8.3 8.1z"/><path d="M650.7 613.7c-14.8-8.8-10.7-36.5 3.7-44 5.3-2.8 12.9-.8 18.3.6 6.3 1.7 13.2 4.1 18.4 8.3 5.8 4.6 14-3.6 8.2-8.2-13.5-10.8-39.8-20.2-54.7-7.8-17.6 14.6-21.3 48.3.3 61.1 6.4 3.8 12.2-6.2 5.8-10z"/><path d="M646.6 592.4c13.9-8.4 30.7-10.3 46.2-5.8 7.2 2.1 10.2-9.1 3.1-11.2-18.4-5.3-38.7-3-55.2 7-6.3 3.8-.5 13.8 5.9 10z"/><path d="M700.2 584.4c14.9-27.3 22-59.3 8-88.5-3.2-6.7-13.2-.9-10 5.9 12 25.2 4.7 53.5-8 76.8-3.6 6.5 6.5 12.3 10 5.8zM399.5 363.8c3.5-2.5 6.9-5 10.4-7.4 2.5-1.8 3.8-5.1 2.1-7.9-1.5-2.5-5.4-3.9-7.9-2.1-3.5 2.5-6.9 5-10.4 7.4-2.5 1.8-3.8 5.1-2.1 7.9 1.5 2.5 5.4 3.9 7.9 2.1zm119.7-28.4c1.4.6 2.2 1 3.7 1 .8 0 1.7-.1 2.5-.3 2.1-.5 3.7-2 4.8-3.7 1.6-2.6.6-6.5-2.1-7.9-2.9-1.5-6.2-.6-7.9 2.1-.1.1-.1.2-.2.3l.9-1.2-.4.4 1.2-.9-.6.3c.5-.2.9-.4 1.4-.6-.2.1-.4.1-.7.2.5-.1 1-.1 1.5-.2h-.7c.5.1 1 .1 1.5.2-.2 0-.3-.1-.5-.1.5.2.9.4 1.4.6 0 0-.1 0-.2-.1-.7-.4-1.4-.6-2.2-.7-.8-.2-1.5-.1-2.3.1-1.3.4-2.8 1.4-3.5 2.7-.7 1.4-1.1 3-.6 4.5.7 1.2 1.6 2.7 3 3.3zm95 28.5c1 .7 2.1 1.4 3.1 2.1 1.2.8 3.1 1 4.5.6 1.3-.4 2.8-1.4 3.5-2.7.7-1.4 1.1-3 .6-4.5-.5-1.5-1.4-2.6-2.7-3.5-1-.7-2.1-1.4-3.1-2.1-1.2-.8-3.1-1-4.5-.6-1.3.4-2.8 1.4-3.5 2.7-.7 1.4-1.1 3-.6 4.5.5 1.5 1.4 2.6 2.7 3.5zm63.8 98.2c1 1.7 2.1 3.5 3.2 5.2 1.6 2.6 5.3 3.8 7.9 2.1 2.6-1.7 3.8-5.2 2.1-7.9-1-1.7-2.1-3.5-3.2-5.2-1.6-2.6-5.3-3.8-7.9-2.1-2.7 1.6-3.8 5.1-2.1 7.9zm-88.8 184.4c-.1.1-.2.3-.3.4l.9-1.2c-.4.5-.9 1-1.4 1.4l1.2-.9c-.6.5-1.2.8-2 1.2.5-.2.9-.4 1.4-.6-.2.1-.3.1-.5.2-1.4.5-2.7 1.3-3.5 2.7-.7 1.2-1 3.1-.6 4.5.9 2.8 4.1 5.2 7.1 4 3.2-1.2 5.7-3 7.6-5.8.8-1.2 1-3.1.6-4.5-.4-1.3-1.4-2.8-2.7-3.5-1.3-.7-3-1.1-4.5-.6-1.4.5-2.4 1.4-3.3 2.7zm-131.5 22.3v.1c.2-.5.4-.9.6-1.4 0 .1-.1.1-.1.2l.9-1.2c0 .1-.1.1-.2.2l1.2-.9c-.1 0-.1.1-.2.1.5-.2.9-.4 1.4-.6-.1 0-.1 0-.2.1.5-.1 1-.1 1.5-.2h-.4c.5.1 1 .1 1.5.2-.1 0-.2 0-.2-.1.5.2.9.4 1.4.6-.1 0-.1-.1-.2-.1l1.2.9c-.1 0-.1-.1-.2-.2l.9 1.2c0-.1-.1-.1-.1-.2.2.5.4.9.6 1.4v-.1c-.4-1.4-1.4-2.8-2.7-3.5-1.2-.7-3.1-1-4.5-.6-3 1-4.8 4-4 7.1.7 2.9 3.6 4.9 6.5 4.9s5.8-2 6.5-4.9c.4-1.5.2-3.1-.6-4.5-.7-1.2-2.1-2.3-3.5-2.7-1.5-.3-3.1-.3-4.5.6-1.2.9-2.2 2.1-2.6 3.6zm-106-81.2c1.7 1.4 3.5 2.8 5.2 4.2 1.2 1 2.5 1.7 4.1 1.7 1.4 0 3.1-.6 4.1-1.7 1.9-2.1 2.5-6.2 0-8.2-1.7-1.4-3.5-2.8-5.2-4.2-1.2-1-2.5-1.7-4.1-1.7-1.4 0-3.1.6-4.1 1.7-1.9 2.1-2.5 6.2 0 8.2zm-31-131.6v1c0 1.5.6 3 1.7 4.1 1 1 2.7 1.8 4.1 1.7 1.5-.1 3.1-.6 4.1-1.7 1-1.1 1.7-2.5 1.7-4.1v-1c0-1.5-.6-3-1.7-4.1-1-1-2.7-1.8-4.1-1.7-1.5.1-3.1.6-4.1 1.7-1 1.1-1.7 2.5-1.7 4.1zM552 587.4c17.6-24 36.1-47.4 55.5-70 4.8-5.6-3.3-13.9-8.2-8.2-20 23.4-39.1 47.6-57.3 72.4-4.5 5.9 5.6 11.7 10 5.8zm36.9-109.6c6.4-5.7 11.7-12.4 15.7-19.9 3.5-6.6-6.5-12.4-10-5.9-3.6 6.7-8.2 12.5-13.9 17.5-5.6 5.1 2.6 13.3 8.2 8.3zm-221.1 27.9c21-29.9 41.9-59.9 62.9-89.8 4.3-6.1-5.8-11.9-10-5.9-21 29.9-41.9 59.9-62.9 89.8-4.3 6.2 5.7 12 10 5.9zm119-27.3c-8.9-5.1-17.7 1.6-22 9.5-4.9 9.2-6.4 20-4.5 30.2 3.6 19.7 21 34.8 40.8 36.3 19.5 1.6 38.4-10 45.5-28.2 8-20.4-.2-41.5-15.8-55.8-19.3-17.7-46.9-8.7-62 9.7-4.7 5.7 3.5 14 8.2 8.2 12.2-14.9 33.4-23 48.3-6.9 12.7 13.8 18.3 33.5 5.4 49.3-11.2 13.6-32.3 16-46.3 5.4-7.2-5.5-12-13.6-13.2-22.5-.6-4.6-.2-9.4 1.1-13.9.6-2.2 4.6-13.8 8.6-11.5 6.5 3.9 12.4-6.1 5.9-9.8z"/><path d="M485.1 544.8c22.9-5.1 38.1-29.6 30.2-52.2-3.6-10.4-11.6-20.5-22.1-24.5-9.5-3.7-19.4 9.7-8.1 13.4 7.1 2.3 10.2-8.9 3.1-11.2-.3-.1-.5-.2-.8-.2l4 4c0-.2-.1-.4-.1-.5l-.6 4.5c-2 .4-2.3.9-.9 1.3.5.3 1.1.6 1.6.9 1.4.9 2.8 1.8 4 2.9 2.4 2.1 4.5 4.6 6.1 7.3 3.2 5.4 4.9 11.9 4.1 18.2-1.6 12.5-11.7 22.3-23.7 24.9-7.2 1.6-4.1 12.8 3.2 11.2z"/><path d="M513.9 496c7.7.7 15.1-2.2 20.8-7.3 5.5-5-2.7-13.2-8.2-8.2-3.5 3.2-7.9 4.3-12.6 3.9-7.5-.6-7.4 11 0 11.6zm10 25.3c4.6-1.1 9.2-2.1 13.9-3.2 7.3-1.7 4.2-12.9-3.1-11.2-4.6 1.1-9.2 2.1-13.9 3.2-7.3 1.7-4.2 12.9 3.1 11.2zm-1.5 21.3c1.9-.9 3.7-1.9 5.6-2.8 2.7-1.4 3.7-5.4 2.1-7.9-1.8-2.8-5-3.5-7.9-2.1-1.9.9-3.7 1.9-5.6 2.8-2.7 1.4-3.7 5.4-2.1 7.9 1.7 2.8 5 3.6 7.9 2.1z"/></svg>
+ data/GhostTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M765 445.2c-1.9-13.5-7-28.2-19.3-34.3-15.6-7.7-33.8 2.3-47.9 12.4-19.8 14.1-39.1 29.2-57.6 45-14.5-7.9-21.8-27.6-21.7-45.1.2-20.6 6.9-41 4.6-61.5-4.1-36.6-35.3-63.8-49.2-97.9-9.3-22.8-10.6-48.8-3.5-72.4-11.1 42-60.3 58.3-95.4 83.8-36.9 26.9-61.4 69.9-65.8 115.4-1.8 18.6-.4 37.7-6.1 55.4-5.7 17.8-21.4 34.4-40 33-16.2-1.2-29-15.2-45.1-17.8-19.3-3.1-37.8 11.7-45.6 29.6-7.8 17.9-7.3 38.2-6.7 57.7.5 17.9 6.4 48 30.7 43.8 22.6-3.9 23.3-36.6 37.1-50 46.4-44.9 71 31.7 52.1 68.9-9 17.7-21.6 33.4-30.5 51.1-16.3 32.4-19.4 71.2-8.3 105.8 1.9-19.1 27.4-28.4 44.9-20.4s27.3 26.8 32.9 45.2c5.6 18.4 8.3 37.9 17.6 54.8 3.3 6 8.9 12.3 15.8 11.4 10.1-1.4 11.2-15.3 11.8-25.5 1.8-32.7 28.3-62.3 60.5-67.6 32.2-5.3 66.9 14.1 79.1 44.5 16.5-1.9 22.9-22.4 24.2-39 1.3-16.6 3.7-36.8 19-43.3 20.7-8.8 50 15.2 64.6-1.9-16.1-51.3-32.2-102.4-48.3-153.4-4-12.7-7.9-26.9-2-38.8 2.6-5.2 6.9-9.2 12-12 3.7 1.4 7.5 2.6 11.5 2.5 9-.3 16.5-7.8 19.8-16.1 3.3-8.4 3.4-17.6 3.8-26.6.4-9 4.4-20.8 13.3-19.8 7.3.8 10.4 10.1 17.1 13.3 6.8 3.2 15.3-1.3 18.7-8 3.4-6.8 3-14.7 1.9-22.2z" opacity=".7" fill="#daedf5"/><path d="M437.6 428.7c-1.2 3.9 6.1 7.9 13.4 7.3 7.3-.6 11.9-5.7 8.4-9.2-3.4-3.5-13.7-4.3-18.8-1.4M552 434c6.5-4 14.2-6 21.9-5.8 2.2 0 4.6.4 5.9 2.2 1.4 1.9.7 4.8-1 6.5s-3.9 2.6-6.2 3.4c-4 1.5-8.2 2.9-12.3 2.3-4.2-.6-8.2-4.3-7.8-8.5" opacity=".7" fill="#ffa799"/><path d="M416.7 796.6c-2.3 20.3 6.8 41.8 19.1 57.5 5.7 7.3 12.7 14 21.3 17.9 3.8 1.7 7.6 2.3 11.6 1.1 5.2-1.6 7-5.1 9.5-9.4.2-.3-1.5 1.7.2-.4.6-.7 1.3-1.2 1.8-2 1.4-2.1 2-5 2.8-7.3 2.6-7.1 5.1-14.3 7.7-21.5 4.9-13.4 10-26.7 16.5-39.3 5.3-10.3 11.8-21.5 20.1-29.8 6.4-6.3 16.8-13.8 26.3-10.2 5.9 2.2 9.1 8.1 12.2 13.2 3.4 5.7 6.5 11.5 9.8 17.3 6.3 11.3 13.5 21.2 22.1 30.8 6.6 7.5 15.7 14.7 25.6 8.3 10.1-6.5 12.9-19.9 15.3-30.8 2.9-13.5 4.3-27.3 7.5-40.7 1.4-6 2.9-13 6.1-18.4 1.6-2.7 4.3-5.8 7.5-6.6 4-1 8.4 2.6 11.7 4.5 17.3 10.1 42.1 25.5 61.4 10.6 10.1-7.8 11.8-22.8 8-34.5-2.6-7.8-6.7-15.5-10.1-23-3.3-7.2-6.6-14.3-10-21.5-14-29.6-28.8-58.8-42-88.8-2.3-5.4-10.2-.7-7.9 4.6 10.9 24.8 22.8 49 34.6 73.4 5.9 12.3 11.8 24.6 17.4 37 5.4 11.9 13.9 25.5 9.4 39-3.5 10.7-17.1 11.9-26.4 9.8-12-2.7-22.7-10.4-33.2-16.4-4.3-2.5-8.5-4.7-13.7-3.8-5.1.9-9.5 4.3-12.6 8.3-7.1 9.2-9.2 23-11.2 34.2-2.3 12.6-3.8 25.4-7.2 37.8-1.5 5.6-3.2 12-7.5 16.1-5.5 5.3-10.6.6-14.7-3.8-8.3-9-15.2-18.3-21.3-29-5.7-10.1-10.6-22.6-19.1-30.7-14.5-13.8-34.4-4-46 8.5-6.8 7.3-12.7 16.5-17.4 25.3-6.2 11.4-11.3 23.4-16 35.6-2.6 6.8-5 13.6-7.5 20.4-1.3 3.6-2.6 7.2-3.9 10.7-.5 1.5-.9 3.6-1.8 4.9-.1.2-1 1-1.5 1.5-1.5 1.7-1.4 4.1-2.8 5.7-1.6 1.8-4.1 2.1-6.2 1.5-4.4-1.1-8.8-4.9-12-7.8-15.7-14.4-27-38.4-24.5-59.9.8-5.7-8.3-5.7-9 .1z"/><path d="M373.6 462.4c-18.5 3.3-32.5-15.1-49.9-18.3-15.5-2.8-31.4 9.5-37 23.3-15.1 37.7-18.8 79.2-13.9 119.4 1.6 13.3 3.3 39.3 21.4 40.6 1.4.1 3.4-.9 3.9-2.3 14.1-33.2 34.7-64.4 63.8-86.3 9.3-7 16.4 20 18.8 25.4 3.9 9 3.8 18.3 1.4 27.7-1.2 4.6-2.9 9-4.9 13.3-1.9 4.1-5.3 6.9-7.3 10.8-4.1 8.3-9.4 15.8-14 23.8-4.7 8.1-8.8 16.5-12.5 25.2-7 16.6-12.1 34-14.9 51.9-2.7 17.4-4.7 36.6-2.2 54.1 1.7 11.9 14 25.4 27.3 20.3 3.6-1.4 6.3-6.6 8.2-9.7 2.6-4.2 4.8-8.6 7.4-12.9 4.7-7.9 11.1-15.7 17.6-22.2 2.9-2.8 9.1-9.3 12.8-4.7 1.7 2.1 2 6.8 2.4 9.2.6 3.1 1 6.3 1.4 9.4 1.4 11.2 2.3 22.4 5.7 33.2 1.8 5.6 10.6 3.2 8.8-2.4-3.4-10.7-4.2-21.8-5.7-32.9-1-8-1.2-19.8-8.5-25-14.1-10.2-29.8 13.6-37.1 22.8-5.6 7.2-9.2 15.6-14.3 23.1-2.8 4.1-6 4.7-10.2 1.8-3.1-2-5.2-5.5-6.3-9-2.6-8.2-1.3-19-1-27.6.4-10.1 1.4-20.1 3.2-30 3.5-19.5 9.6-38.4 18.2-56.2 4.5-9.3 9.7-18.2 15.4-26.8 2.5-3.8 4.1-7.9 6.5-11.7 1.1-1.8 2.8-2.9 4-4.6 1.6-2.1 2.6-4.8 3.7-7.2 3.7-8.3 6.5-17 7.1-26.1.5-9-2.1-16.4-5.3-24.6-4.3-10.8-7.8-26.1-21.2-28.7-8.4-1.6-16.9 8.3-22.6 13.5-7.7 7-14.8 14.7-21.2 22.9-13.3 16.9-23.9 35.7-32.3 55.5 1.3-.8 2.6-1.5 3.9-2.3-5-.4-7.8-8.1-9.1-12.1-2.6-8.4-3.1-18-4-26.7-1.7-17.4-1.7-34.9.1-52.2 1.9-17.9 6.1-35.6 12.4-52.4 2.8-7.7 6.6-13.9 13.8-18.1 8-4.7 15.3-4.4 23.6-.6 15.1 7 27.2 18.3 45 15.1 5.8-1 3.4-9.8-2.4-8.7zm265.3 1.1c26.4-11 41.8-39 69.3-48 11.6-3.8 26-3.6 35.8 4.5 10.8 9 14 26.5 17.5 39.5 1.9 7 3.5 14.2 4 21.5.2 2.8 1.4 9.5-.2 12-1.1 1.7.7 1.7-2.6.8-2.1-.6-4.2-2.7-5.7-4.1-8.2-7.4-15.2-16.7-27.4-16.4-4.5.1-8.8 1.9-11.7 5.4-4.1 5-3.5 11.3-3 17.2.7 7.4.6 14.9-.6 22.3-.6 3.7-1.5 7.4-2.5 11-.5 1.5-.6 3.4-2 3.9-1.2.4-3.8-1.8-4.7-2.5-10-7-20.4-17.2-32.6-7.8-12.9 9.9-9.4 26.9-5 40.2 1.8 5.5 10.6 3.2 8.8-2.4-2.5-7.6-5.9-16.6-2.7-24.5 2.9-7.3 9.5-9.9 16.3-5.8 6.9 4.2 20.5 19.8 28 8.2 3.7-5.7 4.8-14.4 5.7-21 1.1-7.8 1-15.5.3-23.4-.6-6.7.4-13 8.7-11.5 6.7 1.2 11 6.6 15.6 11.2 6.9 6.8 22 16.8 26 1.7 3.6-13.9-1.6-31.2-5.5-44.4-3.8-13-7.3-28.1-18.1-37.4-9.1-7.8-21.5-10.5-33.2-9.2-15.3 1.6-28.5 9.7-40.3 19.2-13.1 10.6-24.7 24.5-40.5 31.1-5.4 2.1-3.1 10.9 2.3 8.7zM478 399.6c-.1-.8-.5-4.2-.4-4.2.1-.1 1.5 2.6 1.6 3.5.6 4-1.4 8.2-3.7 11.4l7.2-.9c-3.6-4.5-4.3-10.2-2.6-15.5-2.8.4-5.6.7-8.3 1.1 2.1 2.9 3.3 5.7 3.4 9.3 1.1-1.5 2.2-2.9 3.4-4.4-.2.1-.5.1-.7.2 1.2.1 2.3.3 3.5.5.2.2.4.4.5.6.1 1.2.3 2.3.5 3.5.1-.2.1-.5.2-.7 1.4-5.7-7.4-8.1-8.8-2.4-1.1 4.4 2.6 8.6 7.2 7.1 1.9-.6 3.4-2.4 3.4-4.4-.2-5.1-1.6-9.8-4.7-13.9-2.3-3.1-7-2.9-8.3 1.1-2.8 8.6-.7 17.5 4.9 24.4 2 2.5 5.6 1.2 7.2-.9 5.4-7.3 8.1-20.7-.6-26.8-3.7-2.6-8.6-2.3-11.6 1.2-3.1 3.5-2.7 8.5-1.9 12.8.9 5.6 9.7 3.2 8.6-2.6zm84.3.7c1.3-2.6 2.6-5.1 3.9-7.7h-7.9c4.1 5.3 4.2 11.8.2 17.2 2.1-.5 4.2-1.1 6.2-1.6-2.7-1.7-3.6-5.9-1.5-8.5h-6.5c1.9 1.6 2.2 3.7.3 5.4l7.2.9c-1.5-2.7-1.9-5.7-.5-8.6 2.4-5.3-5.5-9.9-7.9-4.6-2.7 6-2.7 12 .5 17.9 1.5 2.6 5.1 2.9 7.2.9 5.2-4.9 5.2-13.7-.3-18.3-1.7-1.5-4.8-2-6.5 0-5.9 7.2-4.5 17.7 3.4 22.8 2.2 1.4 4.8.3 6.2-1.6 5.7-7.7 5.6-18.8-.2-26.4-1.9-2.5-6.2-3.4-7.9 0-1.3 2.6-2.6 5.1-3.9 7.7-2.4 5.2 5.4 9.8 8 4.5zm-55.5 53.8c-.9-4.2-.6-8.5.9-12.5.6-1.7 1.5-3.4 2.6-4.9.8-1.1 1.6-2 2.6-2.9.1.2.2.4.4.6 2.6.8 3.9 6.7 4.1 9 .3 3.1-.3 6.2-1.9 8.9-2.1 3.6-5.9 6.7-8.2 1.8-1.8-3.8-2.6-9.7-1.7-13.7 1.1-5 5.5-8.2 9.9-4.5 4 3.4 3.6 9.6 2.7 14.2-1.2 5.7 7.6 8.2 8.8 2.4 1.7-8.6 1.3-18.2-6.2-24.1-6.4-5-15-4.4-20.2 1.8-8.4 9.9-4 42.2 14.1 34.8 13.7-5.6 15.5-26 6.2-36.1-6.6-7.2-13.4-4-18.2 3.2-4.9 7.2-6.2 16-4.4 24.5.9 5.7 9.7 3.3 8.5-2.5zm41.9-118c1.9 1 3.9 2 5.8 3.1 2.1 1.1 5.1.6 6.2-1.6 1.1-2.1.6-5-1.6-6.2-1.9-1-3.9-2-5.8-3.1-2.1-1.1-5.1-.6-6.2 1.6-1.2 2.1-.7 5.1 1.6 6.2zm-72.9 8.7c-.1.3.2-.4.2-.4l.6-1.2c.4-.7.8-1.4 1.3-2 .6-.8 2-2.1 3-2.9 1.9-1.5 1.6-4.8 0-6.5-1.9-1.9-4.5-1.5-6.5 0-3.5 2.8-5.9 6.5-7.5 10.5-.9 2.3 1 5 3.2 5.6 2.7.8 4.8-.8 5.7-3.1z"/><path d="M503.3 252.9c6-.5 12.1-1.5 18-2.6 5.4-1 11.9-1.6 16.8-4.3 14.5-7.9 25-19.7 28-36.4 2.8-15.6-1.1-31.1-12.3-42.5-11-11.4-27.3-17.5-43.1-16.2l4.6 4.6c-1-7.2 6.2-10 12.2-7.2 6.2 2.9 11.9 8.1 17.2 12.4 4.7 3.8 9.3 7.8 14 11.7 5 4.2 10.7 8 15.2 12.7 9.6 9.8 10.5 21.4 6.6 34-3.3 10.6-8.2 20.7-9.5 31.9-3 25.2 15.9 41 32.4 56.7 4.4 4.2 8.7 8.5 12.3 13.4 1.9 2.5 3.3 5.4 5.2 7.9 2.2 3 4.3 5.1 5.8 8.7 5.2 12.7 7 26.9 5.2 40.5-1.9 14.3-7.5 28-9.6 42.3-2 13.4-.8 26.5 5.9 38.5 2.9 5.1 10.8.5 7.9-4.6-14.8-26.4 4.1-55.1 5.4-82.4.7-14.2-2.1-28.4-8-41.4-1.5-3.2-3.7-5.1-5.7-7.9-1.9-2.5-3.5-5.3-5.4-7.8-4.2-5.4-9-10.4-14-15-9.3-8.6-19.5-16.7-25.1-28.3-6.5-13.4-2.4-26.7 2.4-39.8 4.2-11.3 8.5-23.1 5.2-35.2-3.6-13-13.6-20.4-23.5-28.6-6.2-5.2-12.3-10.5-18.7-15.6-5.7-4.5-11.9-10-18.7-12.9-11.2-4.7-25.6 3-23.9 16.1.3 2.3 1.9 4.8 4.6 4.6 28.2-2.3 52.9 21.7 45.9 50.2-3.1 12.6-11.8 23.2-23.9 28.1-8.8 3.6-20 4.6-29.4 5.4-5.8.4-5.8 9.5 0 9zm-99 209.9c-19.1-75.1 10.6-161.5 77.3-203.4 5-3.1.4-11-4.6-7.9-52.9 33.2-85 94.3-87.6 156.1-.8 19.4 1.3 38.8 6.1 57.6 1.5 5.7 10.3 3.3 8.8-2.4zm104.3-27.6c-9 4.7-8.1 20.5 1.4 24.2 9.3-5.4 9.9-20.9 1.1-27"/></svg>
+ data/GirlTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st1{fill:#fbdfc5}.st2{fill:#f29149}</style><g opacity=".7"><path class="st1" d="M559.9 748.3c-4.5-6.7-4.3-16.3.6-22.8s14-9.4 21.7-7"/><path class="st2" d="M505.3 207c-7.9 8.6-7.1 23.7 1.6 31.4 8.7 7.7 23.8 6.6 31.4-2.3m-80.4-79c-3.4 18.6-8.4 37-15 54.8-4.4 11.7-11.1 24.6-23.3 27.2-9.6 2-19.6-3.5-25.2-11.5-5.6-8-7.5-18-8.2-27.8-2.4-33.6 8.8-67.9 30.5-93.7"/><path class="st2" d="M334.3 278.5c.5-8 8.2-13.8 16.1-15.5s15.9-.5 23.9-.9c24.2-.9 47.3-17 56.5-39.4 4.5-10.9 5.8-23.6 1-34.3-3.6-8-10.4-14.3-18.1-18.6-20.8-11.4-48.9-7.1-65.3 10s-19.5 45.4-7.3 65.7m40.1 85.3c12.1 6.2 23.2 18.6 20.2 31.9-2.5 11-14.7 17.9-26 17.3-11.3-.6-21.5-7.2-29.4-15.3-8.3-8.5-33.5-45.6-20.3-57 7.2-6.3 45.9 18.2 55.5 23.1z"/><path class="st1" d="M391.7 261.4c-8.4 2.2-17.2 2.6-25.2 5.7s-15.6 9.9-16 18.5c-.4 9.6 8.1 17.2 16.7 21.4 8.6 4.2 18.4 6.6 25.5 13 21.4 19.1 8.6 61.9 33.2 76.8 22.5 13.6 60-8.6 74.5 13.4 5.6 8.5 4 19.9 8.5 29 4.5 9.1 21.9 11.1 22 1-10.7-14.8 3.9-35.4 20.3-43.3 16.4-7.9 36.3-10.9 48-24.9 10.9-13 20.1-24 24.7-44.1 3-12.9 24-10.5 36.5-15 12.5-4.4 25.4-15.2 23.2-28.3-3-17.9-27.6-19.3-45.8-20.6-42.3-3-81.6-32.2-96.6-71.8 5.8 17.9 11 39.7-1.5 53.8-11.5 12.9-31.2 9.7-44.1.8-15.2-10.6-7.9-54.3-21.2-62.9-18.2-11.6-29.3 30.9-37.3 42.3-10.9 16.4-26 30.2-45.4 35.2z"/><path class="st2" d="M660.5 223.4c-1.3-11.8-3.7-23.4-7-34.8-7.3-27.7-18.7-56.8-43.3-68.2-3.2-1.6-6.5-2.8-9.9-3.4-34.1-8-69.7 19.8-104 26.8-7.6-1.1-15-3.3-22-6.4l7.8 7.9c-6.8 0-13.6-1.1-20.2-3.9-8.1-3.4-16.1-12.7-11.4-20.1 2-3.2 5.8-4.8 9.3-6.2 25.5-10.1 71.8-14.9 50.5-48.1-7.3-11.4-18.7-21.1-30.1-28.1-4.6-2.8-36.1-11.8-36.8-13.6 6.7 17.1 13.5 34.3 20.2 51.4-46.5-9.2-95.5 15.6-123.4 54-27.9 38.4-36.9 87.9-34.3 135.2s15.9 93.4 29.2 138.9l25.5.6c1.6 10.4 3.2 21.1 8.5 30.3 5.3 9.1 15.1 16.5 25.6 15.6 15.1-1.2 24.4-18.4 23.6-33.6-.8-15.1-8.6-28.9-14.3-42.9-5.2-12.8-8.5-27.8-3.5-40.3-4.2 3.1-10.1 5.6-15 5.1-12.6-1.3-24.1-5.8-32.6-15.5-6.9-7.9-12.1-17.5-13.7-28-1.9-12-1.3-24.6 5.3-35.3 7.9-12.8 20.3-18.6 34.9-20 9.9-.9 18 5.8 22 14.2 28.5-33.5 47.1-66.7 75.6-100.1 1.7 20.7 3.8 42.4 15.4 59.5 3.6 5.3 8.5 10 13.9 13.6 2.7 8.1 7.6 16 15.8 16.4 6.1.3 10.8-3.9 13.4-9.5 3.7-.6 7.3-2 10.6-4.1-12.8-15.9-15.4-39.3-6.6-57.8 14.1 31.3 38.4 57.9 68.3 74.7.1 0 .1.1.2.1.6.5 1.3 1 1.9 1.4 12.3 9.1 30 16.7 42 7.2 9.5-7 10-21 8.6-33z"/><path d="M434.7 323.3c6.6.7 8.8 11.6 2.9 14.8-5.9 3.2-13.8-4.5-10.8-10.5m147.5-3.2c8.9-.4 17.9-.8 26.8-1.2-3.2 7.8-12.5 12.5-20.6 10.5" fill="#fca386"/><path class="st2" d="M492.4 314.2c-1.1-1.3 1.2-3.3 2.6-2.3 1.4 1 1 3.3-.4 4.3-1.3 1-3.2 1.1-4.9.8l1.5-3.6m12.9-13c-.1-2.4 3.3-3.8 5.1-2.2s1.4 4.7-.6 6.1-4.8.9-6.5-.7c.5-1 1-2.1 1.5-3.1m22.4 9.2c-.3 2.1 1.9 4.2 4 3.7s3.2-3.3 2-5.1c-1.2-1.8-4.3-1.7-5.5.1"/><path d="M460 489c7.2-5.3 16.3-8 25.3-7.6 5.2 38.9 10.4 77.8 15.5 116.7 20.9-1.2 41.7-2.4 62.6-3.6-1.5-38.2-3-76.4-4.6-114.6 1.6-3.9 7.9-2.6 10.5.7 2.6 3.3 3.7 7.9 7 10.6 7.1 5.8 18.4-2.4 18.9-11.6s-5.5-17.1-11.3-24.2c-7.7-9.6-18.8-20.2-30.5-16.2-5.3 1.8-9 6.4-13.7 9.5-25 17-44-13.1-67.8-8.3-31.9 6.6-8.8 46.3-11.9 48.6z" fill="#ffbf19"/><path d="M466.4 707.9c20.5 9.1 45.9 11.4 61-5.2 1.3-1.4 3.1-10.7 4.8-11.6 4.5-2.5 10.6.5 13.1 5.1s2.5 10 2.4 15.2c15.8-1.4 31.5-3.8 47-7.2 5.8-1.2 12-2.9 15.6-7.7 5.3-7 2.3-17-.9-25.2-6.9-17.7-13.8-35.3-20.8-53-2.5-6.4-5.3-13.2-10.9-17.1-17.2-12.1-75.6-4.7-89.5 12.3-7.8 9.5-25 92.8-21.8 94.4z" fill="#46bfd1"/><path class="st1" d="M392.5 506.9c-4.9 5.7-9.7 12.3-9.6 19.8.2 12.1 12.4 19.9 22.6 26.5 18.7 11.9 35.4 26.9 49.2 44.3 4 5 7.9 11.9 4.8 17.5-2 3.6-6.2 5.3-8.8 8.5s-1.6 9.7 2.5 9.3c3.5 1.7 7 3.3 10.5 5 13.8-14 10.7-37.9.2-54.5s-26.6-28.8-39.1-43.8c-4-4.8-7.9-11.3-5.3-17.1 2.1-4.7 7.6-6.7 12-9.3 11.5-6.9 25.5-33.4 7.6-39.9-15.1-5.7-39 24.7-46.6 33.7zm218.2 135.9c3.2-1.5 3.3-6 3-9.5-3.3-28.2-2.5-61.8-11.4-88.5-23.4 15.2 1.7 101 8.4 98z"/><path class="st1" d="M584.9 501.9c2.2 17.3 4.5 34.7 6.7 52 .8 6.5 3.3 14.7 9.9 15.2 4.7.3 8.6-4 9.5-8.6.9-4.6-.5-9.3-1.9-13.7-6-19.8-1.8-48-7.8-67.8M498.2 829.8c.6 6.4 2.5 14.3 8.8 15.5 7.6 1.4 11.9-8.2 13.3-15.8 5.8-33.7 10.8-75.5 1.7-108.8-54.6-6.7-26.9 77.2-23.8 109.1zm61.1-21.5c.1 9.5.6 20.1 7.1 27.1s21.2 5.9 22.9-3.5c-3.7-21.5-6-43.2-7-65-.7-14.5 3.2-34.9-2.3-47.7-28.8 14-21 64.2-20.7 89.1z"/><path d="M498.3 848.9c.8 4.7 1.6 9.3 2.5 14 4.6 3.1 10.2 4.6 15.7 4.3v-17.9l-16.1-.3m66.8 2.1c1.3 6.3 2.5 12.5 3.8 18.8 6.6 5.1 17.2 3.6 22.2-3s3.5-17.2-3.2-22.1c-6.6 4-14.5 5.6-22.2 4.7" fill="#d1c9fb"/><path d="M448.2 896.8c-5.5 8.2-2.3 20.2 5.4 26.5 7.6 6.3 18.3 7.7 28.1 6.5 11.4-1.5 22.7-6.4 30.1-15.2 7.4-8.8 10.3-21.7 5.7-32.3-2.1-4.8-6.4-9.3-11.6-8.7-3.9.4-6.9 3.6-9.8 6.2-13 12-31.8 17.3-49.1 13.9m127.7-5.3c-5.4 5.3-7.5 13.6-5.3 20.8s8.6 13 16 14.4c8.6 1.7 17.2-2.2 25.9-2.8 11-.8 25.3 1.8 30.3-8 3.8-7.6-2.5-17.1-10.5-19.8-8-2.7-16.8-.7-25.1 1.4-2.3-5.4-4.7-10.9-7-16.3-8.2.8-16.4 1.5-24.5 2.2" fill="#ebe4e3"/><path d="M511.7 133.9c9.4.5 20.7.1 25.8-7.8 5.3-8.3.2-19.3-6.3-26.6s-15-13.8-17.5-23.2c3.2 12.1-51.9 28.3-55.9 42.3-6.4 21.8 37.7 14.4 53.9 15.3z" fill="#e675d1"/></g><path d="M322.8 249.7c-12.8 46.2-12.2 95.8 1.5 141.7 3.9 13 8.8 25.6 14.7 37.8 2 4.2 8.4.5 6.3-3.7-25.8-53.8-31.3-116.4-15.4-173.8 1.2-4.6-5.9-6.6-7.1-2z"/><path d="M342.4 415c4.8-.7 9.7-1.5 14.5-2.2 4.6-.7 2.7-7.8-2-7.1-4.8.7-9.7 1.5-14.5 2.2-4.6.7-2.6 7.8 2 7.1zm6.6-50.5c.7 7.5 1.5 14.9 2.2 22.4.5 4.6 7.8 4.7 7.3 0-.7-7.5-1.5-14.9-2.2-22.4-.5-4.7-7.8-4.7-7.3 0zm10.1-6.7c4.4 34.1 12.1 67.7 23 100.3 1.2 3.7 7.4 3.4 7.2-1-.5-10.4 13.7-8.6 20.1-7.4 4.6.9 6.6-6.2 2-7.1-6.8-1.3-14.2-2.6-20.6.7-5.2 2.6-9 7.8-8.7 13.8 2.4-.3 4.8-.6 7.2-1-10.7-32-18.4-64.9-22.7-98.4-.8-4.5-8.1-4.6-7.5.1zm48 19l7.8 60.3c.6 4.6 7.9 4.7 7.3 0l-7.8-60.3c-.6-4.6-7.9-4.7-7.3 0zm69.6-281c-12-1.7-22 5-29 14.3-7.2 9.7-12.6 21-17.2 32.2-9.6 23.3-14.4 48.4-14.3 73.6 0 4.7 7.3 4.7 7.3 0-.1-22.2 3.8-44.2 11.5-65 3.8-10.4 8.7-20.5 14.4-30.1 5.3-8.8 13.7-19.6 25.4-18 4.6.7 6.6-6.3 1.9-7z"/><path d="M509.1 73.7c5.2-6 13.1 7.9 14.8 11.8 3.7 8.9-5.8 11.7-12.4 14a289.6 289.6 0 0 1-50.4 12.3c-4.6.7-2.7 7.8 2 7.1 12.3-1.8 24.4-4.4 36.3-7.8 5.7-1.6 11.4-3.4 17-5.4 4.1-1.5 8.4-3.1 11.5-6.2 7.8-7.6 3-17.7-2.3-25.1-4.8-6.6-14.6-13.8-21.7-5.7-3.1 3.3 2.1 8.5 5.2 5z"/><path d="M440.6 117.5c-.4 3.7-.7 7.3-1.1 11-.2 1.8 1.8 3.9 3.7 3.7 21.5-2.6 43.1-4.3 64.8-5.2 4.7-.2 4.7-7.5 0-7.3-21.6.9-43.3 2.7-64.8 5.2l3.7 3.7c.4-3.7.7-7.3 1.1-11 .4-4.8-7-4.7-7.4-.1z"/><path d="M529.4 97.5c5.3 4.8 11.8 10.3 12.6 17.9.9 8.5-5.5 11.4-12.8 12.3-17 2.2-34.4 2.2-51.5.6-4.7-.4-4.7 6.9 0 7.3 10.9 1 21.8 1.3 32.8.9 5.5-.2 10.9-.6 16.4-1.2 4.2-.5 8.6-.9 12.5-2.6 7.3-3.2 10.7-10.6 9.8-18.3-1.1-9.3-8-16.1-14.6-22.1-3.5-3.1-8.7 2.1-5.2 5.2z"/><path d="M542.3 121.1c23.5-15.2 54.3-12.3 77.1 2.8 23.4 15.6 37.6 41.7 43.7 68.7 4 17.6 4.7 35.6 3.9 53.6-.2 4.7 7.1 4.7 7.3 0 1.5-32.6-2.6-66.5-19.7-94.9-15-25-39.5-44-69.1-47.2-16.3-1.7-33.1 1.7-47 10.7-3.8 2.6-.2 8.9 3.8 6.3zm-61.9 37.7c.9 14.4 2.7 28.7 5.4 42.9 2.5 12.9 5 27.1 10.5 39.2 2.1 4.5 5.2 8.6 9.9 10.6 6 2.6 12.4.4 18.3-1.4 14.4-4.2 28.9-8.4 43.3-12.6 4.5-1.3 2.6-8.4-2-7.1-12.6 3.7-25.3 7.4-37.9 11.1-5.3 1.6-13.5 5.7-19 3.3-4.1-1.8-6.2-7-7.5-10.9-8.1-24-12.1-49.8-13.6-75-.4-4.8-7.7-4.8-7.4-.1z"/><path d="M532.1 181c2.2 21.7 9 42.6 20.2 61.4 2.4 4.1 8.7.4 6.3-3.7-10.5-17.6-17.1-37.3-19.2-57.7-.4-4.7-7.8-4.7-7.3 0zm8.6-12.2c18.1 42.4 42.6 93.6 93.7 101.4 4.6.7 6.6-6.4 2-7.1-49.1-7.6-71.9-57.4-89.3-98.1-2-4.2-8.3-.5-6.4 3.8zm-75.7-9.6c-12 45.5-42.3 85.2-83 109-4.1 2.4-.4 8.7 3.7 6.3 42.3-24.6 73.8-66 86.3-113.3 1.3-4.6-5.8-6.6-7-2zm-6.8-89.1c-37.7-22-82.5 7.1-108.7 34.2-27.6 28.6-46.1 65.9-52.7 105-3.8 22.2-3.7 44.8.4 66.9.9 4.6 7.9 2.7 7.1-2-6.8-36.8-1.5-75.4 13.6-109.5 15-33.8 40.2-65.9 73.1-83.7 19.3-10.4 43.5-16.3 63.5-4.6 4.1 2.4 7.8-4 3.7-6.3z"/><path d="M493.4 74.2c.7-15-5.8-30.2-17.6-39.7-11.8-9.5-27.6-12.7-42.2-9.1-3.2.8-3.4 5-.9 6.7 14.4 9.3 24.4 24.9 26.5 42 .6 4.6 7.9 4.7 7.3 0-2.5-19.8-13.3-37.5-30.1-48.3-.3 2.2-.6 4.5-.9 6.7 12.4-3.1 26.2-.3 36.1 8 9.9 8.3 15.1 20.9 14.5 33.7-.3 4.7 7 4.7 7.3 0zm-91.8 255c-10.7 17-5.2 39.5 7.8 53.5 14.9 16 37.5 22.1 58.5 25.3 24.8 3.8 50.1 3.3 74.8-1.3 22.4-4.2 45.8-11.5 64.1-25.5 19-14.5 32-38.1 26.6-62.4-1-4.6-8.1-2.6-7.1 2 4.4 19.9-6 39.6-20.9 52.2-15.7 13.3-36.2 20.2-55.9 24.8-22 5.1-44.8 6.6-67.2 4.7-19.9-1.8-41.4-5.5-58.3-16.9-16.5-11.1-27.8-34.2-16.1-52.7 2.6-4-3.8-7.7-6.3-3.7zm252.7-37.8c-.8-1.4 1.6-.8 2.1-.4 1.2.9 1.4 3 1.3 4.3-.2 2.7-1.6 5.4-3.2 7.5-2.9 4.1-7.3 6.6-12.1 7.7-4.6 1-2.7 8.1 2 7.1 10.8-2.4 23.2-13.8 20.4-26-1.2-5-6.1-9.5-11.5-8.2-5.3 1.2-7.7 7.3-5.2 11.9 2.2 3.9 8.5.2 6.2-3.9z"/><path d="M638.8 287.5c5.5-6.9 12.5-14.1 21.6-15.5 8.2-1.2 17 2.8 18.3 11.6 1.3 8.7-3.8 17.5-9.1 23.9-5.9 7-13.3 12.4-21.7 16-4.3 1.9-.6 8.2 3.7 6.3 10.4-4.5 19.4-11.8 26.1-20.9 6.2-8.5 11-20.3 7.1-30.8-3.6-9.7-13.8-14.5-23.7-13.6-11.5 1-20.6 9-27.5 17.7-2.8 3.8 2.3 9 5.2 5.3zm-249.9-7.2c.9-11.9-9.8-22.3-21.5-22.2-12.6.1-23 10.8-25 22.8-2.2 13.7 4.6 26.9 14.9 35.6 11.3 9.5 25.5 14 39.5 18.2 4.5 1.4 6.5-5.7 2-7.1-19.4-5.8-45.5-14.2-49.1-37.5-1.5-9.9 3.2-20.6 13.1-23.9 9.3-3.1 19.6 4.1 18.8 14.1-.4 4.7 6.9 4.7 7.3 0z"/><path d="M380.5 280.4c-9.3-4.4-19.5 4.1-17.6 14.1 2.3 12.5 15.9 15.8 26.7 14.7 4.6-.5 4.7-7.8 0-7.3-6.1.6-13.8.6-17.8-5-1.6-2.2-2.5-5.3-1-7.8 1.2-2 3.9-3.5 6.1-2.4 4.1 2 7.8-4.3 3.6-6.3zm64.3-30.1c4-4.6 9.4-6.7 15.4-5.9 4.7.6 4.6-6.7 0-7.3-7.8-1-15.6 2.1-20.6 8.1-3 3.5 2.2 8.7 5.2 5.1zm18.9 117.2c31 18.7 72.9 14.4 99.6-9.9 3.5-3.2-1.7-8.4-5.2-5.2-24.3 22.2-62.6 25.7-90.7 8.8-4-2.5-7.7 3.9-3.7 6.3z"/><path d="M547.3 354c6.4 2.9 12.9 3.7 19.8 2.6 4.6-.7 2.7-7.8-2-7.1-4.8.7-9.8.1-14.2-1.9-4.1-1.8-7.9 4.5-3.6 6.4zm-45.2-9.1c.2-4.8 6.1-8.7 10.5-6.6 4.2 2 8-4.3 3.7-6.3-9.5-4.5-21.2 2.3-21.5 12.9-.2 4.7 7.1 4.7 7.3 0zm-62.3-64.1c-8.7 3.4-7.3 12.6-3.9 19.5 3.3 6.8 10.3 12.5 17.5 6.6 6.2-5.1 6.4-16.5 3.9-23.6-2.6-7.5-11-11.4-17.6-6.3-3.7 2.9 1.5 8 5.2 5.2 3.5-2.7 5.9 4.4 6.1 6.5.4 3.4.7 8.5-1.3 11.4-4.9 7.3-12.6-10.5-8-12.2 4.3-1.7 2.5-8.8-1.9-7.1zm138.1-1.8c-8.2-2.8-12 11.5-11.4 17.3.9 9.5 11.2 11.7 18.3 7 6.7-4.4 10.6-14.1 6.5-21.5-4.1-7.2-13.6-9.1-20-4.1-3.7 2.9 1.5 8 5.2 5.2 2.7-2.1 7.1-.1 8.5 2.6 1.8 3.4 0 7.7-2.4 10.3-2.2 2.2-7.9 4.9-8.7.1-.3-1.6.3-3.5.8-5.1.2-.6 2.1-4.5 1.5-4.6 4.2 1.4 6.1-5.6 1.7-7.2z"/><path d="M584.8 292.8c3.2-.9 6.5-1.8 9.8-2.7 4.5-1.2 2.6-8.3-2-7.1-3.2.9-6.5 1.8-9.8 2.7-4.5 1.3-2.5 8.4 2 7.1zm-149.1-6.9l-6.9 1.5c-1.9.4-3.1 2.7-2.6 4.5.5 2 2.6 3 4.5 2.6l6.9-1.5c1.9-.4 3.1-2.7 2.6-4.5-.6-2-2.6-3-4.5-2.6z"/><path d="M438.4 284.1c-2.9 7.4-1.2 15.3 3.9 21.3 1.2 1.4 4 1.5 5.2 0 5.6-7.2 5.4-17.2-1.1-23.8-1.7-1.7-4.5-1.3-5.8.7-4.2 6.9-2.1 15.2 4.1 19.9 2.1 1.6 4.6-.3 5.4-2.2 3.1-7.4.9-16.1-5.1-21.4-3-2.5-6.6 0-6.1 3.6.7 5.1 2.8 9.5 6 13.5 1.6 2 5.7 1 6.1-1.6.7-4.7.6-9.4-.9-14s-5.8-4.9-10-3.5c-1.7.6-2.5 1.8-2.7 3.5-.7 5.6 1.5 11.1 5.8 14.8 2.1 1.8 5.3 1.2 6.1-1.6 1.9-6.4-.7-12.8-6.2-16.5-1.6-1.1-4.1-.4-5 1.3-3.8 7.3-2.7 15.9 3 22 3.2 3.4 8.4-1.8 5.2-5.2-3.4-3.6-4.1-8.7-1.9-13.1-1.7.4-3.3.9-5 1.3 2.8 1.9 3.7 5.1 2.8 8.2 2-.5 4.1-1.1 6.1-1.6-3-2.6-4.1-5.7-3.6-9.6-.9 1.2-1.8 2.4-2.7 3.5 1-.5 2-.6 3.1-.4l-2.6-2.6c1.3 3.7 1.9 7.5 1.3 11.4 2-.5 4.1-1.1 6.1-1.6-2.4-3-3.6-6.5-4.1-10.3-2 1.2-4.1 2.4-6.1 3.6 4.3 3.7 5.4 9 3.3 14.2 1.8-.7 3.6-1.5 5.4-2.2-3.1-2.4-3.4-6.8-1.5-9.9-1.9.2-3.8.5-5.8.7 3.5 3.5 4.2 9.4 1.1 13.5h5.2c-3.5-4.1-3.9-9.3-2-14.1 1.8-4.2-5.3-6.1-7-1.8zm135.6 2.3c-3.9 4.1-4.6 9.5-2.3 14.6.6 1.4 2.7 2.1 4.1 1.7 7.8-2.5 11.2-10.9 8-18.3-.9-2-4.4-2.5-5.8-.7-3.3 4.2-8.6 16.6 1.3 16.1 3-.1 5.9-2.4 6.7-5.3 1-3.8-1-7.3-3.3-10.1-1.2-1.5-3.9-1.3-5.2 0-3.3 3.3-4 8.5-1.1 12.4 1.5 2 3.8 2.4 5.8.7 4.4-3.7 5.3-10.5 2-15.2-1-1.4-2.5-2-4.1-1.7-4.9 1.1-3.7 7.7.5 8.9 2.1.6 4.3-.5 5.3-2.5 1.2-2.4.4-4.8-.6-7.1-1.9 1.5-3.8 3-5.8 4.4 1.3 1.5 2.7 3.1 4 4.6 2.7 3.1 8.2-1 5.8-4.4-.8-1.1-1.6-2.3-2.4-3.4-2-2.8-6.9-2.1-6.8 1.9 0 1.7.1 3.4.1 5.1.1 4.7 7.5 4.7 7.3 0 0-1.7-.1-3.4-.1-5.1-2.3.6-4.5 1.2-6.8 1.9.8 1.1 1.6 2.3 2.4 3.4 1.9-1.5 3.8-3 5.8-4.4-1.3-1.5-2.7-3.1-4-4.6-2.9-3.4-7.3.9-5.8 4.4.3-.2.7-.5 1-.7.9-.1 1.9-.2 2.8-.4.5.9.9 1.8 1.4 2.7-.8.9-1.7 1.7-2.6 2.6.2 0 .3-.1.5-.1-1.4-.6-2.8-1.1-4.1-1.7 1.5 2.2 1.2 4.6-.9 6.4 1.9.2 3.8.5 5.8.7-.9-1.2-1.2-2.4 0-3.5h-5.2c.6.7.8 1.8 1.3 2.4.3.4.3.5 0 .6h.7c.4.9.7 1.7 1.1 2.6.2-2.3 1.1-4.5 2.5-6.3-1.9-.2-3.8-.5-5.8-.7 1.3 2.9-.8 6.6-3.7 7.5 1.4.6 2.8 1.1 4.1 1.7-.9-2-.3-4.2 1.1-5.7 3.4-3.7-1.8-8.9-5-5.4zm-79.2 123.2c3 8.8 4.4 17.7 4.4 27 0 4.7 7.3 4.7 7.3 0 0-9.9-1.5-19.6-4.6-28.9-1.6-4.5-8.6-2.6-7.1 1.9zm40.8-6c-1.9 10.5-2.7 21-2.1 31.6.3 4.7 7.6 4.7 7.3 0-.5-10 0-19.9 1.8-29.7.9-4.6-6.2-6.5-7-1.9z"/><path d="M498.3 429.8c-3.2 4.2-12 1.9-16.5 2.1-6.3.4-12 2.9-17.2 6.3-5.8 3.8-10.9 8.5-16.2 13-6.3 5.3-12.7 10.7-19 16-12.5 10.5-24.9 21-37.4 31.5-9.4 7.9-21 16.6-21.1 30.1 0 4.7 7.3 4.7 7.3 0 .1-6.5 4.1-11.5 8.6-15.9 5.2-5.1 11-9.5 16.5-14.2 12-10.2 24.1-20.3 36.1-30.5 5.9-5 11.8-10 17.8-15 5.2-4.4 10.4-9.1 16.6-11.9 10-4.5 23.3 1.9 30.8-7.9 2.9-3.6-3.4-7.3-6.3-3.6zM424 523.2c-4.2-.2-7.2-3.5-7.8-7.5-.3-2-2.8-3-4.5-2.6-2.1.6-2.9 2.5-2.6 4.5 1.1 7.3 7.7 12.5 14.8 12.9 4.8.2 4.8-7.1.1-7.3z"/><path d="M426.6 529.9c18.5-14.8 37.1-29.5 55.6-44.3 3.7-2.9-1.5-8.1-5.2-5.2-18.5 14.8-37.1 29.5-55.6 44.3-3.6 3 1.6 8.1 5.2 5.2z"/><path d="M481.1 487.6c.1-.2.2-.4.3-.7-2.2-.3-4.5-.6-6.7-.9 5.7 39.8 10.3 79.8 13.8 119.9.4 4.7 7.7 4.7 7.3 0-3.6-40.7-8.3-81.3-14.1-121.8-.5-3.4-5.1-3.2-6.7-.9-2.6 3.8-1.2 8.2 2.3 10.7 4 2.7 7.7-3.6 3.8-6.3zm84.1 5.6c-1.7 31.7.2 63.4 5.3 94.8.8 4.6 7.8 2.7 7.1-2-5.1-30.7-6.7-61.8-5.1-92.8.3-4.7-7.1-4.7-7.3 0zm-85.5-57.8c8.7 12 22.4 19.9 37.3 20.5 14.9.6 29.6-6.3 38.9-17.9 2.9-3.6-2.2-8.9-5.2-5.2-7.9 9.8-19.8 15.9-32.5 15.8-12.6-.1-24.9-6.7-32.2-16.9-2.7-3.8-9.1-.2-6.3 3.7zm135.6 225.8v-.2c0 .3-.1.7-.1 1v-.2c-.1.3-.2.6-.4.9 0 0 0-.1.1-.1-.2.2-.4.5-.6.7l.1-.1c-.2.2-.5.4-.7.6 0 0 .1-.1.2-.1-.3.1-.6.2-.9.4.1 0 .2-.1.3-.1-.3 0-.7.1-1 .1h.4c-.3 0-.7-.1-1-.1.1 0 .2 0 .3.1-.3-.1-.6-.2-.9-.4 0 0 .1 0 .2.1-.2-.2-.5-.4-.7-.6l.1.1c-.2-.2-.4-.5-.6-.7l.1.1c-.1-.3-.2-.6-.4-.9v.1c0-.3-.1-.7-.1-1v.2c0-.3.1-.7.1-1v.1c-.2 1-.1 2 .4 2.8.4.8 1.3 1.5 2.2 1.7.9.2 2 .2 2.8-.4.8-.5 1.5-1.3 1.7-2.2.3-1.5 0-3.1-1.1-4.1-.9-.8-2-1.3-3.2-1.3-.9 0-1.8.2-2.6.7-1.2.7-2.2 2.3-2 3.7 0 .5.1 1 .3 1.4.2.5.4.8.8 1.2.6.6 1.7 1.1 2.6 1.1 1 0 1.9-.3 2.6-1.1.5-.6 1.1-1.6 1-2.5z"/><path d="M603.3 645.3c2.5 11.6 3.3 23.4 2.5 35.2-.3 4.7 7 4.7 7.3 0 .9-12.5-.1-24.9-2.7-37.1-1-4.7-8.1-2.7-7.1 1.9zM478.2 603c-2.8 7.8-4.1 16-3.9 24.3.1 4.7 7.4 4.7 7.3 0-.2-7.7 1-15.1 3.6-22.4 1.6-4.5-5.5-6.4-7-1.9z"/><path d="M478.3 603.7c-.2.1-.4.1-.7.2.9.1 1.9.2 2.8.4.1 0 .2.1.4.1.1.9.2 1.9.4 2.8-1.2.7-1.4 1-.6.9h2c1.6 0 3.2.1 4.8.1 2.6 0 5.3.1 8 .2 6.1.1 12.2.2 18.3.4 12 .2 23.9.5 35.8.7 4.7.1 4.7-7.2 0-7.3-17-.3-34-.7-51-1l-12.7-.3c-2.8-.1-6.6-.7-9.2.8-4.9 2.9-1.9 10.6 3.7 9 4.5-1.2 2.5-8.3-2-7zm-1.2 23.8c24.6 2.7 49.4.7 73.3-5.7 4.5-1.2 2.6-8.3-2-7.1-23.3 6.2-47.4 8-71.4 5.4-4.6-.4-4.6 6.9.1 7.4z"/><path d="M483.5 615.5c-11.1-6.5-11.4 20-12 24.7-2.6 19.7-5.2 39.3-7.8 59-.6 4.7 6.7 4.6 7.3 0 2-15.5 4.1-31 6.1-46.5 1-7.6 2-15.1 3-22.7.2-1.4.3-2.8.5-4.2.1-1 .3-2 .6-2.9.1-.4.2-.7.3-1.1.7-1.1.1-1.1-1.9 0 4.2 2.4 7.9-3.9 3.9-6.3zm-23.3 101.2c24.4 9.1 51.2 5.8 76.4 2.4 4.6-.6 4.7-7.9 0-7.3-24.5 3.2-50.7 6.7-74.5-2.2-4.3-1.6-6.3 5.5-1.9 7.1z"/><path d="M528.7 682.6c1 11.1.7 22.2-1.3 33.1-.8 4.6 6.2 6.6 7.1 2 2.1-11.6 2.7-23.3 1.6-35.1-.6-4.7-7.9-4.7-7.4 0zM366.8 522.5c24 32.7 53.3 61.2 86.6 84.3 3.9 2.7 7.5-3.7 3.7-6.3-32.3-22.3-60.8-50-84-81.7-2.7-3.8-9.1-.1-6.3 3.7z"/><path d="M459.1 603.4c-6.7 1.1-14-2.2-19.9 2.7-5.5 4.5-4.2 11.7-1.5 17.5 5.7 12.2 15.4 24.8 30 25.2 4.7.1 4.7-7.2 0-7.3-10.6-.2-17.2-9.5-21.8-18-2-3.7-6.1-10.8 0-12.6 4.7-1.4 10.2.5 15.1-.3 4.7-.9 2.8-7.9-1.9-7.2z"/><path d="M448.1 610.4c5.6 2.7 10.9 6.1 15.6 10.2 3.5 3.1 8.7-2.1 5.2-5.2-5.2-4.5-10.9-8.4-17.1-11.3-4.3-2.1-8 4.2-3.7 6.3zm-32.4-82.2c20.7 24.4 40.4 49.7 59 75.7 2.7 3.8 9.1.1 6.3-3.7-19-26.5-39.1-52.2-60.1-77.1-3.1-3.7-8.3 1.5-5.2 5.1zm25.2-66.8c4.7 0 4.7-7.3 0-7.3-4.8 0-4.8 7.3 0 7.3z"/><path d="M436.5 454.7c5.7 15.5 14.5 29.5 26.1 41.3 3.3 3.4 8.5-1.8 5.2-5.2-10.7-10.8-19-23.7-24.2-38.1-1.6-4.3-8.7-2.4-7.1 2zM582 613.1c8.4 17.2 15.2 35 20.2 53.4 1.3 4.5 8.3 2.6 7.1-2-5.3-19-12.3-37.5-21-55.2-2-4.1-8.4-.4-6.3 3.8z"/><path d="M559.2 632.3c10.2 6.8 21.3 12.1 33.1 15.8 4.5 1.4 6.4-5.7 2-7.1-11.2-3.5-21.6-8.5-31.3-15-4.1-2.7-7.7 3.7-3.8 6.3z"/><path d="M446.6 286.9c0 .1-.4.2-.4.1l.2.1c.1.2.2.1.1.4-.2.7-1.4 1.1-1.9 1.4.3 0 .6-.1.9-.1-.9-.3-.6-2.3.3-2.3-.4-.6-.7-1.2-1-1.8-.9 1.3-1.8 2.6-2.7 4 .6-.1 1.1-.3 1.7-.4-.4-.2 0 0 0 .1l.1-.2s.2-.3.2-.2c.1-.3.1.1-.2-.1 1.2 1 2.9-.7 1.7-1.7-2.8-2.3-6 2.8-3 4.3.6.3 1.3.1 1.7-.4.9-1.3 1.8-2.6 2.7-4 .5-.7-.2-1.9-1-1.8-1.8.1-3 1.5-3.2 3.3-.2 1.5.7 3.9 2.6 3.9 1 0 2.3-1 2.9-1.7.7-.8 1.1-1.9.8-2.9-.6-1.9-3.3-2.8-4.5-1-1 1.1 1.2 2.3 2 1zm133.8-2.8c.8 1.2.8 3-.5 4h1.2c-1.1-.7-1.5-1.9-1.5-3.1-.2.4-.4.7-.6 1 .8-.5 1.7-.4 2.3.3-.1-.3-.2-.6-.4-.9-.1 1.6-1.8 2.9-3.4 2.5.2.2.5.4.7.6-.4-.6-.6-1.3-.4-2 .1-.5.5-1.3 1.2-1.2.3.1.5.5.5.8 0 .2.1.4 0 .6-.1.3-.1.1-.1.1-1.6.1-1.6 2.6 0 2.4 2.6-.2 3.1-3.2 1.8-5.1-1.8-2.5-5.1-.9-5.8 1.6-.4 1.3-.2 2.8.5 3.9.9 1.3 3 .9 4.2.3 1.4-.6 2.5-1.8 2.9-3.2.2-.7.4-1.6-.1-2.2-.5-.6-1.3-1-2-1.2-1.6-.4-3.9.1-3.8 2.1 0 2 1.1 3.6 2.7 4.7.3.2.9.2 1.2 0 2.3-1.7 3-4.9 1.3-7.3-.7-1.2-2.8 0-1.9 1.3z" fill="#fff"/><path d="M529.5 684.7c4.6 12 8.7 24 12.5 36.3 1.4 4.5 8.4 2.6 7.1-2-3.7-12.2-7.9-24.3-12.5-36.3-1.7-4.4-8.8-2.5-7.1 2z"/><path d="M546.1 724.8c22.8-2.7 44.8-9 65.5-18.8 4.2-2 .5-8.3-3.7-6.3a196.6 196.6 0 0 1-61.8 17.8c-4.6.6-4.6 7.9 0 7.3zm59.6-56.7l7.5 27.3c.8 2.8 1.1 7.3 3.8 9 2.6 1.7 5.2.2 6.3-2.5.5-1.2-.1-2.7-.9-3.6l-.2-.2c-3.2-3.5-8.4 1.7-5.2 5.2l.2.2-.9-3.6c0 .1-.1.3-.2.4l2.6-2.6c-.1 0-.3.1-.4.2l3.6.9c.2.8.2.7 0-.2-.2-.8-.4-1.5-.6-2.3l-1.2-4.5c-.8-2.8-1.5-5.5-2.3-8.3l-4.8-17.4c-1.5-4.5-8.5-2.6-7.3 2zM492.4 801.7c.3 8.1 8.7 14.4 16.6 11.9 4.5-1.4 2.6-8.5-2-7.1-3.2 1-7.2-1.3-7.3-4.9-.2-4.6-7.5-4.6-7.3.1zm2.2 66.8c7.6 4.9 16.2 6.5 25.1 5.2 4.6-.7 2.7-7.7-2-7.1-6.9 1-13.6-.7-19.4-4.4-4-2.6-7.6 3.8-3.7 6.3zm110.3-701.3c3.1 9.3 6.2 18.5 9.3 27.8 1.5 4.4 8.6 2.5 7.1-1.9-3.1-9.3-6.2-18.5-9.3-27.8-1.6-4.5-8.6-2.6-7.1 1.9z"/><path d="M608.3 676.3c-9.6 4.3-19.1 8.6-28.7 12.9-4.3 1.9-.6 8.2 3.7 6.3 9.6-4.3 19.1-8.6 28.7-12.9 4.3-1.9.6-8.2-3.7-6.3zm-40.6 124.2c1.5 4.5 4.9 9.8 10.5 8.1 2.5-.7 3.8-2.7 4.6-5.1.9-2.7 1.6-5.5 2.5-8.2 1.3-4.5-5.7-6.5-7.1-2-.4 1.4-.8 2.8-1.3 4.2-.2.7-1.5 3.4-1.2 4 .2.3-.1-.1.2 0 .4.2.1-.2.1-.1 0-.2-.8-1.2-.9-1.3-.2-.5-.4-1-.5-1.6-1.3-4.4-8.4-2.5-6.9 2zm-4.4-317.2c3.2 6.6 4.7 13.7 4.8 21 0 2.6 2.3 3.9 4.6 3.5 14.9-2.4 28.7-9.5 39.3-20.2 3.3-3.3-1.8-8.5-5.2-5.2-9.8 9.9-22.3 16.2-36.1 18.4 1.5 1.2 3.1 2.4 4.6 3.5-.1-8.7-2.1-16.9-5.8-24.7-1.9-4.2-8.2-.5-6.2 3.7z"/><path d="M551.8 433c6.8-2.4 12.7 1.9 17.4 6.5 4.5 4.4 8.8 9 13.1 13.7 9.1 10 17.6 20.5 25.6 31.4 2.8 3.8 9.1.1 6.3-3.7-9.2-12.6-19.1-24.8-29.8-36.2-8.6-9.2-20.2-23.9-34.6-18.8-4.4 1.6-2.5 8.7 2 7.1zm20.2 71.9c6.1 24 9.9 48.4 11.2 73.1.2 2.9 4 5.1 6.2 2.6 1.1-1.2 1.9-1.8 3.5-2.2 4.6-1.2 2.6-8.2-2-7.1-2.7.7-4.9 2-6.8 4.1 2.1.9 4.2 1.7 6.2 2.6-1.4-25.3-5.2-50.5-11.5-75-.9-4.6-8-2.6-6.8 1.9z"/><path d="M586.2 576.2c-.3 17.8 1.1 35.6 4.3 53.1.8 4.6 7.9 2.7 7.1-2-3.1-16.9-4.4-34-4.1-51.2.1-4.7-7.2-4.7-7.3.1z"/><path d="M564.4 600c4.7.2 9.5.1 14.2-.3-1-.6-2.1-1.2-3.2-1.8 5.2 11.5 10.5 22.9 15.7 34.4 2 4.3 8.3.6 6.3-3.7-5.2-11.5-10.5-22.9-15.7-34.4-.5-1.1-2-1.9-3.2-1.8-4.7.4-9.4.5-14.2.3-4.6-.2-4.6 7.1.1 7.3zm64.9-276.7c0 2.2 1 4.4 2.7 5.9 2 1.7 4.3 2.2 6.9 1.8 1.9-.3 3.1-2.8 2.6-4.5-.7-2-2.5-2.9-4.5-2.6 1.2-.2 0 0-.1-.1 0 0 .8.3.2 0-.8-.4.7.2-.1 0-.5-.2.2.3 0 0-.1-.1-.4-.3-.5-.5l.3.3c-.1-.1-.1-.2-.2-.3-.1-.4.2.7 0 0s0 .8 0-.1c0-1.9-1.7-3.8-3.7-3.7-1.9.2-3.6 1.7-3.6 3.8zM466 711c.2-5.3.8-10.6 1.7-15.8-1.5.8-3 1.7-4.5 2.6 10.1 2.8 20.5 4.5 31 5.1 4.7.3 4.7-7 0-7.3-9.8-.6-19.5-2.3-29-4.9-1.8-.5-4.1.6-4.5 2.6-1.1 5.9-1.7 11.8-2 17.8-.2 4.6 7.1 4.6 7.3-.1zm28.8 161.8c-2.8 2.5-6 4.4-9.6 5.7-2.4.9-3.2 3.1-2.2 5.4 2.2 5.2 4.5 10.3 6.7 15.5 1.9 4.3 8.2.6 6.3-3.7-2.2-5.2-4.5-10.3-6.7-15.5-.7 1.8-1.5 3.6-2.2 5.4 4.8-1.7 9-4.2 12.8-7.6 3.6-3.1-1.6-8.3-5.1-5.2z"/><path d="M483 881.7c-6.9 1.9-14.3.1-21.3 1.1-7.2 1.1-14 3.7-20.8 6.4-4.3 1.7-2.5 8.8 2 7.1 6.8-2.7 13.7-5.5 21-6.4 7.1-.9 14.1.8 21.1-1.1 4.4-1.3 2.5-8.4-2-7.1z"/><path d="M440.1 891.1c-5.1 13.8-5.4 28.9-.9 42.8 1.5 4.5 8.5 2.5 7.1-2-4.2-12.9-3.9-26.3.9-39 1.7-4.3-5.4-6.2-7.1-1.8zm26.9-.3c.9 2 1.7 3.9 2.5 5.9.2.4 1.7 3.7 1.2 1.6.4-.8.3-1-.4-.7-.6.1-1.2.3-1.8.4-4 .9-8.1 1.8-12.1 2.8-4.6 1-2.6 8.1 2 7.1 3.2-.7 6.5-1.5 9.7-2.2 2.6-.6 5.9-.8 8-2.6 4.6-3.9-.9-11.9-2.7-16-1.9-4.3-8.2-.5-6.4 3.7z"/><path d="M454.7 889.6c-1.2 5.8-1 11.5.9 17.1 1.5 4.4 8.6 2.5 7.1-2-1.5-4.3-1.9-8.7-.9-13.2 1-4.6-6.1-6.5-7.1-1.9zm37.9-6c1.3 2.4 2.7 4.8 4 7.2 2.3 4.1 8.6.4 6.3-3.7-1.3-2.4-2.7-4.8-4-7.2-2.3-4.1-8.6-.4-6.3 3.7zm58.5-150.4c5.3 46 9.3 92 11.8 138.2.3 4.7 7.6 4.7 7.3 0-2.6-46.2-6.5-92.3-11.8-138.2-.5-4.6-7.9-4.7-7.3 0zm35.6-19.5c-.7 59.5 3.3 118.9 11.7 177.8.7 4.7 7.7 2.7 7.1-2-8.3-58.2-12.1-117-11.4-175.9 0-4.6-7.3-4.6-7.4.1zm-23.3 169.5c0 8 .1 16 .2 24.1 0 3.7 0 7.5.1 11.2 0 2.9-.3 6 1.1 8.7 2.7 5.1 8.8 4.7 13.7 4.5 7.7-.3 15.4-.5 23.2-.8 4.7-.2 4.7-7.5 0-7.3-6.2.2-12.3.4-18.5.6-2.7.1-5.5.3-8.2.3-3.2 0-3.8-.3-3.8-3.6-.1-12.6-.2-25.1-.2-37.7-.3-4.8-7.6-4.8-7.6 0z"/><path d="M588.3 912.3c.9-7 7.4-13.2 12.9-17.1 5.5-3.9 12-6.8 18.9-7 12.3-.5 25 8.6 25 21.7 0 4.7 7.3 4.7 7.3 0 0-16.9-16.1-29.7-32.4-29-16.6.7-36.9 14-39.1 31.4-.5 4.7 6.8 4.7 7.4 0z"/><path d="M610.8 934.8c8.8-4.3 19.5 0 28.8-2.2 7.5-1.7 14.2-7.9 13.9-16-.2-4.7-7.5-4.7-7.3 0 .3 9.1-11.3 9.7-17.8 9.3-7.4-.4-14.5-.9-21.3 2.5-4.2 2.1-.5 8.4 3.7 6.4zm.2-15.9c5.5-1 10.9-1.9 16.3-2.8 4.6-.8 2.7-7.9-2-7.1-5.5 1-10.9 1.9-16.3 2.8-4.6.9-2.6 7.9 2 7.1zm-170.7 10.3c23.7 12.2 53.6 10 75-6.2 3.7-2.8.1-9.2-3.7-6.3-19.3 14.5-46 17.2-67.6 6.2-4.2-2.1-7.9 4.2-3.7 6.3z"/><path d="M516.1 875.1c1.5 14.2 1.6 28.4.2 42.6-.5 4.7 6.9 4.7 7.3 0 1.4-14.2 1.3-28.4-.2-42.6-.5-4.6-7.8-4.7-7.3 0z"/><path d="M515.8 913.5c-1.4.7-2.8 1.4-4.3 2.1-1.7.9-2.3 3.4-1.3 5 1.1 1.8 3.2 2.2 5 1.3 1.4-.7 2.8-1.4 4.3-2.1 1.7-.9 2.3-3.4 1.3-5-1.2-1.8-3.2-2.3-5-1.3zm-14.4-2.2c2.5-1.1 5-2.1 7.5-3.2 1.8-.8 2.2-3.5 1.3-5-1.1-1.9-3.2-2.1-5-1.3-2.5 1.1-5 2.1-7.5 3.2-1.8.8-2.2 3.5-1.3 5 1.1 1.8 3.1 2 5 1.3zm-6.3-11.4c4.6-1.7 8.4-4.7 10.9-9 2.4-4.1-3.9-7.8-6.3-3.7-1.5 2.5-3.7 4.6-6.5 5.6-1.9.7-3.1 2.5-2.6 4.5.5 1.8 2.7 3.3 4.5 2.6zm-.8-52.2c10 3.2 20.6 3.3 30.7.2 4.5-1.4 2.6-8.5-2-7.1-8.9 2.8-17.9 2.7-26.8-.2-4.4-1.4-6.4 5.7-1.9 7.1zm70.2 0c9.9 2.2 19.9 2 29.7-.5 4.6-1.2 2.6-8.2-2-7.1-8.5 2.2-17.2 2.4-25.8.5-4.5-1-6.5 6-1.9 7.1zm-1.9 30.4c13.6 5.6 28.9 3 40.4-5.9 3.7-2.9-1.5-8-5.2-5.2-9.5 7.4-22.3 8.5-33.3 4-4.3-1.8-6.2 5.3-1.9 7.1z"/><path d="M502.6 867.4c-.3-49.4-4.6-98.8-12.9-147.5-.8-4.6-7.8-2.7-7.1 2 8.2 48.1 12.4 96.8 12.6 145.5.1 4.7 7.5 4.7 7.4 0zm21.6-151.2c1.8 58.2-.6 116.4-4.9 174.4-.3 4.7 7 4.7 7.3 0 4.3-58 6.6-116.2 4.9-174.4-.1-4.7-7.4-4.7-7.3 0zM601 492.8c9.7 26.6 14.5 54.7 14.2 83 0 4.7 7.3 4.7 7.3 0 .3-28.9-4.5-57.8-14.4-85-1.6-4.3-8.7-2.4-7.1 2z"/><path d="M609.3 558.4c8.2 35.4 10.1 71.9 5.8 107.9-.6 4.7 6.8 4.6 7.3 0 4.4-36.7 2.3-73.9-6.1-109.8-1-4.6-8-2.7-7 1.9z"/><path d="M615.8 668.2v8.2c0 4.7 7.3 4.7 7.3 0v-8.2c0-4.7-7.3-4.7-7.3 0z"/></svg>
+ data/GrassTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M714.3 640.4c.3-9.3.5-18.7.8-28-17.4 9.8-36.2 16.5-55.6 20.1l6.9-47.7c-21.4 5.5-42.1 13.9-61.5 25.2 2.2-18.7 21.3-46.2 23.5-64.9-13.6 15.2-44 39.2-57.5 54.4 1.4-37.7 11.2-70.7 12.6-108.5-26 20.9-59 39.2-81.6 64.2-2.4-37.8 4.3-63.5 11.9-100.6-51.2 31.6-80.2 82.8-101.6 142-6.7-15.3-18.4-28-32.6-35.2-5.7 13.8-11.4 27.6-17.1 41.3-8-20.3-16-40.6-23.9-60.8-10.9 12.8-14.8 32.2-9.8 48.6 1.8 6-2.6 14.2-4.4 20.3-4.2 14.4-17.6 4.9-26.2-7s-20.2-27.7-32.9-21.4c12.3 14.2 25.3 30.4 25.1 49.9 0 .5 0 1-.1 1.6-.6.2-1.2.5-1.7.8.5 1.1.9 2.3 1.1 3.4-.8 3.5-2.2 6.8-4.1 9.8.3.1.7.2 1 .2.5.1 1 .3 1.5.5-1.8 3.9-4.9 7.3-8.5 9.6-7.9 4.8-17.6 5.4-26.8 5.1-1.5 5.2 3.5 10.4 8.8 11.4s10.7-.6 16-1.6c10.4-1.9 21.1-1.1 31.5-2.6 3.8-.5 7.7-1.5 11.3-2.8 17.1.8 34.8 3.4 47.2 3.5 28.6.2 57.6-1.1 86.1.7 8 .1 15.9.1 23.9.2 19 .2 38.1.3 57.1.4 88.6.7 177.1 1.4 265.7 2-13.5-33.8-55.2-50.3-86.1-34.1z" opacity=".7" fill="#55d60f"/><path d="M290.2 651.9c-4.6-32.5-17.6-63.5-37.6-89.5l-4.7 4.7c26.1 11.5 48.9 29.7 65.7 52.7 1.8 2.5 6.7 2 6.4-1.7-2.4-31.7 3.9-63.7 18.4-92.1h-5.9c11.4 26 20.7 52.9 28.1 80.4.8 2.9 4.8 3.3 6.3.8 4.4-7.3 5.9-15.8 7.4-24 1.2-6.6 2.1-15.7 7.4-20.4 6-5.3 13.7-1.8 17.2 4.3 4.4 7.7 5.2 17.4 4.7 26-.2 3.8 5.9 4.7 6.8.9 10.9-50.9 40.2-97.1 81-129.3 11.5-9.1 23.9-16.9 37-23.5-1.7-1.3-3.4-2.6-5-3.9-9.5 38.6-15.7 77.9-18.5 117.5-.3 3.7 4.6 4.2 6.4 1.7 20.9-28.9 48.3-52.7 79.7-69.4-1.7-1-3.5-2-5.2-3-4 36.5-10.2 72.8-18.3 108.6-.8 3.8 4.2 6 6.3 2.7 15.1-24.4 37.4-43.6 63.6-55.3-1.7-1.3-3.4-2.6-5-3.9-6.9 23.8-13.8 47.5-20.7 71.3-.8 2.9 2.5 5.4 5 3.9 21.4-12.8 44.3-22.5 68.4-28.9l-4.2-4.2c-4.4 17.5-8.8 35.1-13.2 52.6-.6 2.5 1.7 5 4.2 4.2 20.9-6.3 40.9-15.1 59.6-26.3-1.7-1-3.5-2-5.2-3-.8 11.3-1.6 22.6-2.5 33.9-.2 2.4 2.3 3.7 4.3 3.3 25.8-5.1 53.4 2.9 72.6 20.9 3.2 3 8.1-1.8 4.9-4.9-21.1-19.8-51-28.3-79.3-22.7 1.5 1.1 2.9 2.2 4.3 3.3.8-11.3 1.6-22.6 2.5-33.9.2-2.6-3-4.2-5.2-3-18.2 10.9-37.6 19.5-58 25.6l4.2 4.2c4.4-17.5 8.8-35.1 13.2-52.6.6-2.5-1.7-4.9-4.2-4.2-24.6 6.5-48.2 16.5-70.1 29.6 1.7 1.3 3.4 2.6 5 3.9 6.9-23.8 13.8-47.5 20.7-71.3.9-3.1-2.5-5-5-3.9-27.2 12.1-50.3 32.4-66 57.7l6.3 2.7c8.2-36.4 14.4-73.3 18.5-110.5.3-2.8-3.1-4.1-5.2-3-32.5 17.3-60.6 42-82.2 71.9 2.1.6 4.3 1.2 6.4 1.7 2.8-39 8.9-77.7 18.3-115.7.8-3-2.4-5.2-5-3.9-47.6 24-86.1 65.2-107.4 114.1-6 13.8-10.7 28.1-13.8 42.9 2.2.3 4.5.6 6.8.9.8-13.1-1.8-35-17.1-39.2-6.5-1.8-13.8.5-18.1 5.7-4.4 5.3-5.8 12.5-7.1 19.1-1.6 8.5-2.7 17.5-7.2 25 2.1.3 4.2.5 6.3.8-7.5-28-17.2-55.4-28.8-82-1-2.3-4.9-2.2-5.9 0-15 29.4-21.8 62.6-19.3 95.5 2.1-.6 4.3-1.2 6.4-1.7-17.5-24-41-43.1-68.2-55.1-2.7-1.2-7.1 1.6-4.7 4.7 19.7 25.6 32.4 55.9 36.9 87.9.6 4.6 7.2 2.7 6.6-1.6z"/><path d="M281.5 650.3c-9.8-3.3-19.5-6.6-29.2-9.8-3.5-1.2-6.4 2.4-5.6 5.6 1.6 7.2 2 14.6.9 21.9l2.1-2.7c-2.2 1-4.9.1-6.1-1.9-3.2-4.9-11.2-.3-7.9 4.6 3.8 5.8 13 9.6 19.2 4.8 3.2-2.5 2.6-10 2.6-13.6 0-5.2-.7-10.4-1.9-15.5l-5.6 5.6c9.8 3.3 19.5 6.6 29.2 9.8 5.5 1.9 7.9-7 2.3-8.8z"/><path d="M257.9 680.4c23.8-3.1 47.9-4 71.9-2.5 5.9.4 5.9-8.8 0-9.2-24-1.5-48-.7-71.9 2.5-2.5.3-4.6 1.9-4.6 4.6 0 2.3 2.2 5 4.6 4.6zm123.2-15.9c-2.8-2.9-4.2-7-3.5-11 1-5.8-7.8-8.2-8.8-2.4-1.3 7.4.7 14.5 5.9 19.9 4 4.2 10.5-2.2 6.4-6.5zm58-.2c4.3-6.8 8.6-13.5 13-20.3 3.2-5-4.8-9.6-7.9-4.6-4.3 6.8-8.6 13.5-13 20.3-3.2 5 4.8 9.6 7.9 4.6z"/><path d="M427.1 672.9c5-7.8 14.2-12.6 23.5-12 9.4.6 17.5 6.8 21.6 15.1 2.6 5.3 10.5.7 7.9-4.6-5.5-11.2-17-18.9-29.5-19.6-12.6-.7-24.6 6.1-31.4 16.5-3.2 4.9 4.7 9.5 7.9 4.6zm89.4-3.8c2.6-5.1 8.1-8.5 13.9-7.4 6.2 1.1 10.2 7.2 10.1 13.2-.1 5.9 9.1 5.9 9.2 0 .2-10-6.8-19.9-16.8-22-9.6-2-19.9 2.8-24.3 11.6-2.6 5.2 5.3 9.8 7.9 4.6z"/><path d="M545 681.8c18-1 36-1.9 54-2.8 5.9-.3 5.9-9.5 0-9.2-18 1-36 1.9-54 2.8-5.9.3-5.9 9.5 0 9.2zm98.3-9.9c.5 1.1-.2.2.7 0 .5-.2 1-.7 1.6-.7 1.7-.2 3.4 1.2 4.7 2.1 3.4 2.5 6.3 5.4 10.2 7.1 7.7 3.4 16.2 3 23.8-.6 5.3-2.5.7-10.5-4.6-7.9-4.7 2.2-10.3 2.4-15.1.4-4.9-2.1-8.2-6.7-13.1-8.9-8.7-3.9-20.5 3.2-16 13.2 2.3 5.3 10.2.6 7.8-4.7zm70.1 17.6c13.5-1.9 27.2-1.8 40.7-.3 5.8.7 5.8-8.5 0-9.2-14.4-1.7-28.8-1.4-43.2.6-2.5.3-3.8 3.5-3.2 5.6.8 2.7 3.3 3.6 5.7 3.3zm-219.8-76.8l3.9-14.7c1.5-5.7-7.3-8.2-8.8-2.4l-3.9 14.7c-1.5 5.7 7.3 8.2 8.8 2.4z"/></svg>
+ data/HeartTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M457.8 403.7c-16.7-5.3-35.3-6.4-51.8-.6-37 13.1-51.6 58-40.6 93.5s40.8 63 71.2 86.7c22.8 17.8 46.7 34.4 71.5 49.8 5.6 3.5 14 14.2 20.8 13.3 3.7-.5 7.1-6.2 10.3-8 30.8-17.1 57.7-40.6 80.3-66.5s38.4-57.8 40.2-91.2c1.2-22.2-4.9-46.2-23.1-60.5-18.3-14.4-45.8-15.7-68-7.2-14.7 5.7-49.8 33.7-49.8 33.7s-20.9-18.9-27.2-24.4c-9.7-8.4-21.4-14.7-33.8-18.6z" opacity=".7" fill="red"/><path d="M586 449.8c6.3-3.7 13.8-9.2 12.4-16.4-.8-4.3-5-7.4-9.3-8.3s-8.8.1-13 1.4c-14.6 4.4-28.5 12.8-36.3 25.9-7.7 13-9.2 36.6 5.7 44.9 13-19.9 17.4-34.1 40.5-47.5zm-172.8 28.1c5.3-8.8 14.1-14.8 21.5-21.9 5.9-5.6 11.2-14 8-21.5-3.6-8.4-15.3-9.4-23.9-6.6-13.2 4.3-24.3 14.9-29.1 28s-3.4 28.3 3.8 40.2c18.2 30.3 14.4-9.4 19.7-18.2z" opacity=".7" fill="#ff8585"/><path d="M522.4 447.6c-8.9-29.1-36.4-47.7-65.8-51.5-16.5-2.1-33.7 0-49.5 5.2-14.5 4.8-28 12.8-37 25.4-9.5 13.3-12.8 30.4-13 46.5-.2 17.1 3.5 34 10.6 49.5 12.6 27.5 35.2 48.9 58.6 67.3 14.8 11.6 30.1 22.4 45.3 33.5 17.4 12.6 34.8 25.3 52.2 37.9 4.5 3.3 8.8-4.2 4.4-7.5-27.6-20.1-55.5-39.9-82.9-60.3-22.5-16.6-45-34.8-60.6-58.3-16.8-25.3-24.2-57.9-15.2-87.5 4.4-14.3 13.6-25.4 26.7-32.5 13.1-7.1 28.4-10.7 43.2-11.3 16.7-.7 33.6 2.7 47.9 11.8 12.5 7.9 22.4 19.9 26.7 34.1 1.7 5.3 10 3.1 8.4-2.3z"/><path d="M524.5 457.7c7.6-24.5 29.7-43.8 55.3-47.2 26.6-3.6 54 9.4 67.6 32.6 13 22.1 13.5 49.8 6.4 73.9-8.1 27.5-26.6 50.7-46.7 70.5-11.9 11.8-24.7 22.8-37.6 33.5-14 11.6-28.7 22.6-44.5 31.7-4.8 2.8-.5 10.2 4.4 7.5 15.1-8.7 29.2-19.1 42.7-30.1 12.5-10.2 24.8-20.7 36.4-31.8 22.2-21.1 42.8-45.8 52.5-75.3 8.6-26.1 8.5-56.3-4.4-80.9-13.5-25.6-41.4-41.4-70.3-40.5-32.1 1-60.6 23.6-70.1 54.1-1.6 5 6.7 7.3 8.3 2z"/></svg>
+ data/HotAirBalloonTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0{opacity:.7;fill:#ff1e74}</style><path class="st0" d="M295.6 389.9c10.6 68.3 49.6 128.3 87.7 186 21.6 32.8 43.3 65.5 64.9 98.3 4.5 6.9 9.5 14.1 17.1 17.2s26.1 17 27.2 8.8c-48.8-97.5-75.2-210.1-96.6-315.9-8.1-40.1-13.5-94.6 2.8-132.2 9.6-22 18.9-37.1 36.6-53.4 3.4-3.1-13.5-1.3-15-5.6-8.4-23.9-91.3 55.4-97.9 65.1-25.6 37.6-33.7 87-26.8 131.7zm46.9 242.3c.6.6 1.2 1.3 1.9 1.9 10 10.1 20.5 19.8 31.3 29 4 3.4 8.1 6.8 12.2 10-33.2-37.6-59.9-80.7-86.3-123.4-24.6-39.9-46.4-79.6-57.1-125.5-23.6 21.7 32.3 111.4 45.7 133.3 15.7 26.1 33.6 50.7 52.3 74.7zm418-176.9c2.3-6 4.6-12.4 3.9-18.9-.7-6.5-5.2-13-11.7-13.7-1.9-.2-66.8 134.4-74.7 147.1-29.2 47.2-64.3 89.1-98 132.6 81-62.5 143.8-152.2 180.5-247.1z"/><path d="M421.7 434.4c-9.5-40.3-17.8-81.6-17.5-123.8.3-42.1 10.1-85.6 32.6-115.5s59-43 87.7-24.8c30.9 19.6 45.3 67.8 48.6 112.9 7.9 109.4-31.6 211.3-45.4 317-2.3 17.4.5 110.4-20.6 106.7-16-2.8-29.3-76.2-34.2-92.2-18.4-59.6-36.7-118.7-51.2-180.3zm-169.8-65.1c-8.8 78.4 40.2 150.4 86.8 214.1 24 32.9 48.1 65.7 72.1 98.6 5.7 7.8 11.7 15.8 20.2 20.4 8.5 4.5 20.4 4.4 26.6-3-26.5-19.7-43.5-49.2-59.8-78-24.1-42.6-48.3-85.3-72-128.1-17.4-31.3-34.8-63.3-41.4-98.4-11.5-61.2 16-109.1 51.1-155.5-45.7 1.5-79.6 93.1-83.6 129.9zM720 392.7c-11.4 84.4-56.9 160-104.3 230.7-16.2 24.1-33.1 48.9-37.9 77.5 67.8-76.4 124.7-162.5 168.4-254.9 8.2-17.3 16-35.1 19-54 2.4-15 .8-79.1-22.4-79.8-25.2-.8-20.9 66.7-22.8 80.5z" fill="#f6f5da" opacity=".7"/><path class="st0" d="M699.7 288.8c-18.7-52.7-62-62.4-89.9-81.8-11.8-8.2-17.8-9.2-20.4-3.6-1.3-.4-2.7-.8-4-1.1-1.9 7-.2 14.8 2.7 22.8 1.3 20.1 5.7 51.8 6.7 93.4.7 27.6-10.8 83.5-15.9 110.6-19.4 102.6-20.7 180.8-54.4 279.5 3 3.5 8.4-.5 11.1-4.2 65-89 131.3-180.5 160.8-286.8 11.6-41.9 17.9-87.6 3.3-128.8z"/><path d="M469.2 748.9c2 2.5 4.1 5 7 6.2 7.8 3.1 15.9-4.7 24.3-4.1 4.4.4 8.7 3.2 13.1 2.2 3.4-.7 5.9-3.4 8.2-6 11.4-13 22.8-25.9 34.2-38.9-19.5 22.2-92.8 3.5-117 2.2 9.1 13.4 20 25.7 30.2 38.4z" opacity=".7" fill="#b30044"/><path d="M448 818.7c.3 5 .6 9.9.9 14.8.7 11.7 2.7 25.5 13.2 30.6 5.2 2.5 11.3 2.2 17.1 1.8 11.5-.8 23.1-1.6 34.6-2.4 7.7-.5 15.7-1.2 22.1-5.3 16.4-10.7 12.6-35.4 6.8-54.1-8.4 2-16.5 5.5-23.8 10.2-2 1.3-4 2.8-4.9 4.9-1.4 3.2.1 6.9.6 10.4 2 13.4-13.8 25.9-26.4 20.9s-15.5-24.9-4.8-33.3c-14.1-7.2-31.2-8.2-46.1-2.8" opacity=".7" fill="#575043"/><path d="M441.8 809.3c-16.5 7-20 33-6 44.2 2.1-17.5 4.3-35 6.4-52.4m47.5 11.6c-9.6 9.9-3.6 29.6 9.9 32.5 4.3-13 5.6-27 3.8-40.5m55.5 11.5c-7.1 3.5-8.9 14.4-3.3 20s16.6 3.6 20-3.5-2.1-16.8-9.9-17.7" fill="#eb9f15" opacity=".7"/><path d="M297.5 423.9c-.2-3.4-1.9-6.1-2.8-9.3-1-3.4-1.7-7-2.3-10.5-1.4-7.1-2.3-14.3-2.7-21.5-.9-13.7-.3-27.5 2-41.1 4.5-27.5 15-53.7 30.3-77 2.5-3.8-3.6-7.3-6.1-3.5-24.2 36.9-36.7 81.4-32.9 125.6.5 6.3 1.4 12.6 2.6 18.8.6 3.1 1.2 6.2 2 9.2.7 3 2.8 6.4 3.1 9.4.1 4.4 7.1 4.4 6.8-.1zm152.8-236.7c-24.8 17.5-38.7 46.8-46.5 75.3-9.6 35.2-10.2 72.2-6 108.3 4.4 38 13.8 75.2 23.6 112.1 9.4 35.3 19.4 70.5 30 105.4 11.5 38 23.8 75.9 37.4 113.2 1.5 4.2 8.4 2.4 6.8-1.9-24-65.9-44.2-133.2-62.6-200.9-19.1-70.2-40.5-145.2-26.1-218.3 6.3-31.9 19.4-67.7 47-87.2 3.7-2.5.1-8.6-3.6-6z"/><path d="M292.5 268.3c-42.6 36.5-52.7 97.4-42.3 150.2 5.6 28.5 16.5 55.6 29.3 81.5 13.3 26.8 28.5 52.7 45.1 77.6 18.5 27.6 38.9 54 60.9 78.9 3 3.4 8-1.6 5-5-38-43-71.1-90.5-97.8-141.2-26.4-50.1-48-107.3-36-164.7 5.8-27.7 19.2-53.7 40.8-72.3 3.4-3-1.6-7.9-5-5z"/><path d="M327.6 481.1c18.4 33.6 36.8 67.3 55.2 100.9 16.3 29.8 31.7 60.5 51.2 88.4 10.5 15.1 22.4 29.2 36.3 41.4 3.4 3 8.4-2 5-5-24.6-21.5-42.4-49.1-58.4-77.3-18-31.8-35.2-64-52.7-96-10.2-18.6-20.4-37.3-30.6-55.9-2.1-4.1-8.2-.5-6 3.5zm243.5 174.6c32.5-34.6 62.5-71.5 89.7-110.4 2.6-3.7-3.5-7.2-6.1-3.5-26.9 38.4-56.5 74.8-88.6 109-3.1 3.2 1.9 8.2 5 4.9zM313.7 242.8c12.4-13.1 27.7-23.3 43.6-31.7 19-10 39.6-17.2 60.8-20.9 12.4-2.1 25-2.8 37.5-1.8 4.5.4 4.5-6.7 0-7-43.4-3.4-88.8 12.4-124.1 37.1-8.1 5.7-15.9 12-22.7 19.3-3.2 3.3 1.8 8.3 4.9 5zm384.7 35.4c18.3 53.3 17.5 112.4-1.6 165.4-5.4 15-12.3 29.3-20.5 43-2.3 3.9 3.7 7.4 6.1 3.5 29.9-49.5 41.8-109 34-166.3-2.2-16.2-5.9-32.1-11.2-47.5-1.5-4.2-8.3-2.4-6.8 1.9zm-157.7-89.6c14.6 4.5 22.2 21.7 26.8 34.9 5.7 16.3 8.4 33.5 9.8 50.7 2.7 32.7 1.2 65.7-1.7 98.3-6.7 74.4-21.2 147.9-35.5 221-7.4 37.5-15 75-21.3 112.7-.8 4.4 6 6.3 6.8 1.9 12.1-72.1 28.2-143.5 40.6-215.6 6.5-37.5 12.2-75.1 15.8-113 3.3-33.6 5.1-67.6 2.6-101.4-1.4-19.5-4.2-39.1-10.8-57.6-5.5-15.4-14.4-33.5-31.3-38.7-4.3-1.3-6.2 5.5-1.8 6.8zm-71 580.5c7-2.1 14.2-3.5 21.6-4.1 3.3-.2 6.7-.3 10-.2 3.7.1 7.8 1.2 11.4.9 2.8-.2 4.8-3.5 6.6-5.3 2.8-2.9 5.5-5.7 8.2-8.6 5-5.2 9.9-10.5 14.8-15.7 20.1-21.6 39.6-43.8 58.6-66.3 10.8-12.9 21.5-26 32-39.2 2.8-3.5-2.2-8.5-5-5-37 46.6-76.3 91.4-117.7 134.1.8-.3 1.7-.7 2.5-1-15.1-2-30.3-.7-44.9 3.6-4.3 1.3-2.5 8.1 1.9 6.8z"/><path d="M364 628c33.5 50.2 70.9 97.7 111.6 142.3 3.1 3.4 8-1.6 5-5-40.3-44.1-77.3-91.1-110.5-140.8-2.6-3.8-8.6-.3-6.1 3.5z"/><path d="M419.8 702.9c47.2 15 98 17 146.2 5.7 4.4-1 2.5-7.8-1.9-6.8-47 11-96.5 9-142.4-5.7-4.4-1.4-6.2 5.4-1.9 6.8zm54.4 51.2c-4.1 16.1-8.2 32.2-12.4 48.2-1.1 4.4 5.7 6.3 6.8 1.9 4.1-16.1 8.2-32.2 12.4-48.2 1.2-4.5-5.6-6.3-6.8-1.9zm28.8-2.2c1.7 14.6 5.1 28.8 10.5 42.5 1.6 4.2 8.5 2.3 6.8-1.9-5.1-13-8.6-26.7-10.3-40.6-.5-4.4-7.5-4.5-7 0z"/><path d="M452.5 813.2c29.2.9 58.4-.8 87.3-4.9 4.5-.6 2.6-7.4-1.9-6.8-28.3 4-56.9 5.5-85.4 4.7-4.5-.2-4.5 6.9 0 7z"/><path d="M440.6 806.5c-.4 10.2.5 20.3 2.5 30.3 1.7 8.7 3.9 18.9 9.1 26.3 5.3 7.5 13.2 7.8 21.7 7.8 11.1 0 22.1-.1 33.2-.2 4.5 0 4.5-7.1 0-7-9.3 0-18.6.1-27.9.1-8 0-17.5 1.9-22.1-6.2-4-6.9-5.8-15.7-7.3-23.5-1.8-9.1-2.4-18.4-2.1-27.7.1-4.4-6.9-4.4-7.1.1zm97.6.7c4.3 10.6 9 21.9 8 33.5-.8 9-5.8 18.6-14.8 21.7-4.3 1.5-2.4 8.3 1.9 6.8 10.6-3.6 17.5-13.4 19.4-24.2 2.5-13.7-2.7-27.1-7.7-39.6-1.7-4.2-8.5-2.4-6.8 1.8z"/><path d="M484.4 805.2c2.4 4.4.5 9.7-.8 14.1-1.3 4.6-2.9 9.5-2 14.4.8 4.7 4.2 8.7 8.9 10.1 6 1.8 12.4-.6 17.9-2.9 1.1-.5 1.7-1.9 1.7-3 .1-7.3.3-14.5.5-21.8.1-4.5-7-4.5-7 0-.1 7.3-.3 14.5-.5 21.8.6-1 1.2-2 1.7-3-4.1 1.7-11.5 4.8-15.1.4-2.2-2.7-1.2-6.8-.4-9.9 2-7.8 5.4-16 1.2-23.7-2.2-4-8.3-.5-6.1 3.5zm68 6.6c5.9-1.8 12.9.4 15.9 6.1 3 5.7.8 12.6-4 16.5-3.5 2.9 1.5 7.8 5 5 7.2-5.9 9.6-16.8 5.1-25.1s-15-12.1-23.8-9.3c-4.4 1.3-2.5 8.1 1.8 6.8zm-121-10.3c-2.2 12.3-15.7 18.8-17.6 31.3-1.4 8.9 2.5 21 13.3 20.5 4.5-.2 4.5-7.2 0-7-8.2.4-7.4-12.5-4.6-17.3 5-8.8 13.9-15.1 15.8-25.6.7-4.4-6.1-6.3-6.9-1.9zm145.1-604.6c25.1 2.9 49.8 12 71.2 25.3 22.1 13.7 41.6 32.8 52.2 56.9 6.3 14.4 8.8 30.1 7.9 45.7-.3 4.5 6.8 4.5 7 0 1.7-28.9-8.6-56.3-27.3-78.1-18.1-21.2-42.6-36.6-68.5-46.4-13.7-5.2-27.9-8.8-42.5-10.4-4.4-.5-4.4 6.5 0 7z"/><path d="M723.5 293.6c21.7 13.6 33.3 37 33.9 62.3.6 25.6-6.9 51.5-15.4 75.3-17.5 48.8-44.5 94-72.9 137.1-15.5 23.5-31.6 46.5-47.7 69.6-2.6 3.7 3.5 7.2 6.1 3.5 30.5-43.6 61.2-87.2 86.9-133.9 12.8-23.2 24.4-47.2 33.5-72.1 8.9-24.4 16.5-50.7 16.6-76.8.1-28.8-12.7-55.6-37.4-71.2-3.9-2.3-7.4 3.8-3.6 6.2z"/><path d="M765.3 416.2c6 7.4 3.4 19.9 1.5 28.2-2.5 10.8-6.4 21.3-10.9 31.5-9.9 22.6-20.9 44.9-33.2 66.3-22.1 38.2-49.8 72.1-82.1 102.2-21.8 20.4-45 39.2-68.4 57.5-3.6 2.8 1.5 7.7 5 5 39.9-31.2 79.3-63.8 111.6-103.1 30.5-37.2 53.6-79.7 73-123.6 5.1-11.6 9.7-23.5 12.4-35.9 2.3-10.8 3.7-23.8-3.8-33-3-3.6-7.9 1.4-5.1 4.9zm-520.9-13.9c-18.4 41.2 1.5 86.4 22.5 122.5 22.5 38.6 48.9 74.9 78.6 108.2 16.9 18.9 34.9 36.8 53.8 53.7 3.4 3 8.4-2 5-5-32.2-28.7-61.7-60.5-87.8-95-13.1-17.3-25.3-35.3-36.6-53.9-11.1-18.2-21.8-37-28.7-57.3-7.7-22.5-10.7-47.5-.8-69.8 1.9-4-4.1-7.6-6-3.4zm212.7-208c3.6-6.8 10.3-10.4 17.4-12.8 8.5-2.8 17.5-4.3 26.4-4.8 17.4-1.1 35.5 3.2 47 17.2 2.9 3.5 7.8-1.5 5-5-12.9-15.7-33.9-20.6-53.4-19.2-16.6 1.2-39.6 4.6-48.3 21-2.3 4 3.8 7.6 5.9 3.6z"/></svg>
+ data/HouseTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st3{opacity:.7;fill:#4a2c16}</style><path d="M788.6 466.7c-4.2-12.8-13.9-22.7-23.2-32.1-73.8-73.7-147.5-147.5-221.3-221.2-5.4-5.4-11.1-10.9-18.3-12.9-13.9-3.8-27.4 6.9-38.1 16.9L341.3 352.7c-33.8 31.2-97.5 69.8-107.5 118.8-8.6 42.5 16.5 104.4 24.5 145.5 12.5 63.4 19.5 119.4 32.4 182.6 4.4 22.4 12.4 62.8 33.1 70.8 15.4.6 52.9-2.7 69.2-5.1 16.3-2.4 33.9-9.5 48.4-1.5-3.6-92.5-2.6-185.2 2.8-277.6 59.7-7.2 119.8-10 179.8-8.2.9 99-10.6 198.1-34 294.1 49.6-7.3 99.5-11.9 149.5-13.7L789 506.2c1.9-13.1 3.7-26.9-.4-39.5zm-237.3-98.8c-.7 2-1.6 3.9-2.8 5.8-14.2 23.7-46 21-65.3 6.1-10.4-8-17.5-19.5-17.7-32.9-.2-16 9.9-28.6 22.7-36.8 10.2-6.5 22.7-4.6 31.8 2 8-.3 14.5 3.8 20.4 8.5 5.3 4.2 9.5 9.9 12.5 15.9 5.7 10.6 4.9 22.4-1.6 31.4z" opacity=".7" fill="#fd7c00"/><path d="M557 338.3c-1.6-18.2-19.6-31.6-37.7-34.2-10.8-1.5-21.7-.1-32.4 2.6-.7.8-1.3 1.6-2.1 2.3l3.9-.8c-12.3 4.7-18.2 21.3-17.7 35.8.7 19.5 8.1 44.6 26.7 50.6 16.8 5.4 36.2-3.9 47.3-17.6 8.3-10.1 13.2-25.6 12-38.7z" opacity=".7" fill="#85f5ff"/><path d="M440 584.9c56.2-10.1 113.5-13.6 170.5-10.3 7.2 96.7.4 194.4-20 289.1-59.2-.2-131.8 31.5-145.6-41.7-3.9-20.5-14.9-235.3-4.9-237.1z" opacity=".7" fill="#a15f2f"/><path class="st3" d="M521.8 185.7c-2.2-18-4.4-36.1-6.6-54.1-48.8 39-393 282.6-345.3 347.3 20.2 27.5 127.2-102.7 152.8-126.5 21.1-19.8 201.2-149.1 199.1-166.7z"/><path class="st3" d="M820.6 466.7c12.2-16.9 8.4-41.2-3-58.6s-29-29.6-45.8-42c-57.7-42.5-110.2-92-156.2-147-14.4-17.3-61.6-90.9-85.5-70.8-29.1 24.5 53.8 85 68.3 99.4 20 19.7 226.4 213.2 222.2 219z"/><path d="M738.2 324c1-35.5 2-70.9 3.1-106.4.1-2.3.2-4.8 1.8-6.5 1.9-1.9 4.9-1.9 7.5-1.7 13.5.8 26.9 1.7 40.4 2.5-6.5 49.2-15.4 98.1-26.6 146.5-9.4-11-21.7-19.4-35.3-24.2-6.1-42.8-7.9-86.2-5.4-129.4" opacity=".7" fill="#857a74"/><path d="M221.2 483.1c11.6 100.1 28 199.7 49.1 298.3 6 28.1 12.4 56.1 19.2 84 1.2 5.1 9.1 3.2 7.9-1.9-23.8-98-42.9-197-57.2-296.8-4.1-28.4-7.8-56.9-11.1-85.4-.6-5.3-8.5-3.4-7.9 1.8zm-70.3-31.4c12.9 12.9 23.4 27.9 31.1 44.4 1.3 2.8 5.5 2.6 7 .2 16.8-26.7 38.5-49.7 61.4-71.1 20.3-19 41.3-37.2 62.2-55.4 43.1-37.5 86.6-74.6 129.8-111.9 22.3-19.2 44.5-38.4 66.5-57.9 3.9-3.5-1.7-9.4-5.6-5.9-41.4 36.7-83.5 72.6-125.5 108.7-42.3 36.4-85 72.4-126.1 110.1-26 23.8-50.8 49.3-69.7 79.2 2.3.1 4.7.1 7 .2-8-17.2-18.9-32.8-32.3-46.1-3.6-3.7-9.5 1.8-5.8 5.5z"/><path d="M146.6 454.9c43.8-43 88.7-84.9 134.7-125.5 46.2-40.8 93.5-80.4 141.9-118.7 27.1-21.5 54.6-42.6 82.4-63.3 4.2-3.1-1.4-9-5.6-5.9-49.2 36.7-97.5 74.6-144.7 113.8-47.4 39.4-93.8 80.1-139.1 121.9-25.4 23.5-50.5 47.4-75.2 71.7-3.6 3.7 1.9 9.6 5.6 6zm381.8-314.2c46.2 43.5 92.5 87 138.7 130.4 45.9 43.2 92.2 86 137.7 129.6 10.3 9.9 21.4 21.2 24.9 35.5 2.8 11.6.6 26-10 33 1.8.5 3.7 1.1 5.5 1.6-10.2-21.4-28.5-37.2-45.3-53.3-19-18.2-38.1-36.4-57.1-54.6L607.3 252.5c-21.6-20.7-43.2-41.3-64.9-62-3.8-3.6-9.7 2-5.9 5.6C612.8 269 688.9 341.8 765 414.5c19 18.2 41.7 36 53.2 60.3.9 1.9 3.8 2.8 5.5 1.6 9.4-6.3 14.4-16.5 15.2-27.6.9-12.4-3.6-24.2-10.7-34.2-8.1-11.4-18.8-20.7-28.9-30.3l-36.6-34.5c-48.6-45.7-97.2-91.5-145.9-137.2-27.5-25.8-55-51.7-82.4-77.5-3.9-3.5-9.8 2-6 5.6zm-11.6-9.4c2.6 18.3 2.9 36.9 1.2 55.3-.5 5.2 7.6 5.4 8.1.2 1.8-19.2 1.3-38.4-1.4-57.5-.8-5.1-8.7-3.1-7.9 2zm-8.2 155.2c-21.7 8.1-40.6 26.1-46.8 48.8-6.1 22.4 2.9 45.3 22.6 57.5 18.9 11.7 43.3 11 60-4.3 16.2-14.7 22.9-39.6 13-59.6-10.8-21.8-38.5-33.8-61.6-25.7-4.9 1.7-3 9.6 1.9 7.9 17.4-6.1 37.4.7 48.5 15.2 11.7 15.2 9.2 36.5-2.4 51-12.2 15.3-32.3 19.5-49.9 11.4s-28.4-26.1-25.6-45.5c3.2-22.2 21.6-41.2 42.2-48.9 4.9-1.7 3-9.6-1.9-7.8zM802 476.4c-12.9 98.8-27 197.5-42.5 295.9-4.4 27.9-8.8 55.9-13.4 83.8-.8 5.1 6.9 7.5 7.8 2.4 16.2-99 31.2-198.2 44.9-297.6 3.9-28.1 7.6-56.2 11.3-84.3.7-5.1-7.4-5.3-8.1-.2z"/><path d="M399.2 870.5l285.6-6c13.2-.3 26.3-.5 39.5-.8 6.6-.1 13.2-.3 19.8-.4 3.6-.1 7.2-.2 10.8-.2.8 0 2-.1 2.9 0 1.3.2 2.9 1.5 3.4.8-3.2 4.1 3.7 8.3 6.9 4.3 2.4-3 1.6-6.8-1.1-9.3-3.2-3.1-7.6-3.9-11.9-3.8-12.6.1-25.2.5-37.7.8-25.8.5-51.5 1.1-77.2 1.6-51.2 1.1-102.4 2.1-153.6 3.2l-87.1 1.8c-5.3 0-5.6 8.1-.3 8zm325.3-667.4c0 35.6-.1 71.3-.2 106.9 0 5.2 8.1 5.5 8.1.2 0-35.6.1-71.3.2-106.9 0-5.2-8.1-5.5-8.1-.2z"/><path d="M719.8 213.8c15.4-.8 30.9-.5 46.3 1 6.2.6 14.9.2 15.8 8.1.6 5.7-1.5 11.5-2.7 17-5.7 24.9-9.6 50.3-12 75.7-1.3 13.7-2.1 27.5-1.9 41.4.1 5.2 8.2 5.5 8.1.2-.4-27.5 2.7-55.2 7.2-82.4 2.2-13.2 4.9-26.2 7.9-39.2 2.8-11.7 2.1-25-12.1-27.6-18.2-3.4-37.9-3.1-56.3-2.2-5.3.1-5.6 8.2-.3 8zM432.5 576.9c-1.5 76.7-.5 153.4 3.1 230 1 21.8 2.2 43.5 3.7 65.2.3 5.3 7.4 5.4 8.1.2.1-1 .3-1.9.4-2.8.7-5.2-7.4-5.3-8.1-.2-.1 1-.3 1.9-.4 2.8 2.7.1 5.4.2 8.1.2-5-76.5-7.5-153.2-7.5-229.9 0-21.8.2-43.6.7-65.3.1-5.2-8-5.4-8.1-.2z"/><path d="M430 579.8c32.4-6.2 65.1-9.8 98.1-10.8 16.2-.5 32.4-.4 48.5.5 10.9.6 24.6 2.2 30.9 12.4 2.7 4.4 9.9.6 7.1-3.9-6.8-11.1-19.3-14.7-31.6-16.1-16.3-1.8-33.1-1.4-49.5-1.1-35.4.7-70.7 4.5-105.5 11.2-5 1-3.1 8.8 2 7.8z"/><path d="M612.3 573.8c3.3 73.7 1.5 147.6-5.6 221-2 20.9-4.5 41.8-7.3 62.7 2.7.1 5.4.2 8.1.2.5-4.3 1-8.5 1.5-12.8.6-5.2-7.5-5.4-8.1-.2-.5 4.3-1 8.5-1.5 12.8-.6 5.2 7.4 5.3 8.1.2 10-73.1 14.8-146.8 14.5-220.6-.1-21-.7-42.1-1.6-63.1-.2-5.1-8.3-5.4-8.1-.2zM491 841.5c26.9 1.8 53.8 1.8 80.7-.1 5.2-.4 5.4-8.5.2-8.1-26.9 1.9-53.8 1.9-80.7.1-5.1-.3-5.3 7.8-.2 8.1zm-170.9-460c-.2 81.1 1.3 162.1 4.4 243.1.9 23 1.9 46 3 69 .3 5.2 8.4 5.5 8.1.2-4-81-6.4-162-7.2-243-.2-23-.3-46.1-.2-69.1 0-5.2-8.1-5.5-8.1-.2zm22.2 367.4c4.2 25.9 8.3 51.7 12.5 77.6.8 5.2 8.7 3.2 7.9-1.9-4.2-25.9-8.3-51.7-12.5-77.6-.9-5.2-8.8-3.2-7.9 1.9zm88.9-455.5c-3.9 53.4-4.1 107-.7 160.4.3 5.2 8.4 5.4 8.1.2-3.4-53.4-3.2-107 .7-160.4.4-5.2-7.7-5.4-8.1-.2zm238.7 42.7l-1.5 225.7c0 5.2 8.1 5.5 8.1.2l1.5-225.7c.1-5.2-8-5.4-8.1-.2zm-.4 275.3c3.8 63.8 4.8 127.9 3 191.8-.5 18.2-1.2 36.3-2.2 54.4-.3 5.2 7.8 5.4 8.1.2 3.3-63.9 3.9-127.9 1.7-191.9-.6-18.1-1.5-36.2-2.5-54.3-.3-5.2-8.4-5.4-8.1-.2zM765 430.2c-2.7 62.4-8.2 124.6-16.5 186.5-.7 5.2 7.4 5.4 8.1.2 8.3-61.9 13.8-124.1 16.5-186.5.2-5.2-7.9-5.4-8.1-.2zM523.6 611.5c-2.5 3.5-2.6 8.1-.8 12 1.7 3.6 5.8 7.3 10 6.2 7.9-2 6.5-15.7-1.9-15.5-5.2.1-5.5 8.2-.2 8.1.5 0 .3.1.1 0-.5-.1-.8-.3-.9-.7-.1-.2-.1-.2 0 0 .1-.1.1.7.1.4v.4c-.5.2 1.7-1.1 1.7-.7 0 0-1.2-1-1.3-1.1-.3-.4-.5-.9-.6-1.4-.4-1.3-.1-2.3.7-3.4 3-4.3-3.9-8.5-6.9-4.3z"/></svg>
+ data/JewelTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M411.9 500.7c37.7 4.8 91.3 6.2 129.2 3.8 21.9-1.4 36.5-5.9 54.5-20-11-23.4-32.9-45.5-50.7-62.8-1.9-1.9-3.9-3.7-6.3-4.6-17.9-6.9-54 2.3-69.5 15.1-9.9 8.1-19.3 18.3-28 28-3.6 4.1-27.1 40.8-29.2 40.5z" opacity=".7" fill="#63d3ff"/><path d="M421 508.8c-6.7-2.6-14.8.1-19.2 6.6 11.5 22.8 28.7 40.8 45.7 58.3 19.4 20.1 38.8 40.2 58.1 60.3 6.3 6.5 14.5 13.6 22.4 10.2 4.1-1.8 7-6 9.7-10.2 30.2-46.5 57.2-95.7 80.9-147-73.2 21.3-149 30.1-224.4 26" opacity=".7" fill="#00b8ff"/><path d="M452.5 436.1c12.6 8.9 25.2 17.8 37.9 26.7 3 2.1 6.1 4.3 9.5 5.4 4.8 1.5 9.9.9 14.9.2 18.6-2.5 37.2-5.5 55.8-9 1.9-.4 4.2-1.2 4.4-3.3.1-1.3-.7-2.5-1.4-3.5-6-8-12.7-15.2-19.9-21.7-5.8-5.2-12.1-9.9-19.1-12.9-21.5-9.4-45.5-1.9-68.5-.5" opacity=".7" fill="#dbfaff"/><path d="M390.5 519.6c29.7 31.2 59.3 62.5 89 93.7 8.5 8.9 17 17.8 25.4 26.8 3.3 3.5 8.5-1.8 5.2-5.2-29.7-31.2-59.3-62.5-89-93.7-8.5-8.9-17-17.8-25.4-26.8-3.2-3.5-8.5 1.8-5.2 5.2zm-.8-7.7c24-34 53.5-64.2 87.3-88.4 3.9-2.8.1-9.2-3.8-6.4-34.9 25-65.2 56-90 91.1-2.7 3.8 3.8 7.6 6.5 3.7z"/><path d="M387.6 515.1c24-5.6 48.9-6.5 73.2-2.5 4.7.8 6.7-6.4 2-7.2-25.7-4.2-51.8-3.4-77.1 2.5-4.8 1.2-2.8 8.3 1.9 7.2zm80.5-14.2c13.6-27.7 27.2-55.4 40.9-83.1 2.1-4.3-4.3-8-6.4-3.8-13.6 27.7-27.2 55.4-40.9 83.1-2.1 4.3 4.3 8.1 6.4 3.8zm54.6-79.3l43.2 72c2.5 4.1 8.9.4 6.4-3.8l-43.2-72c-2.4-4.1-8.9-.3-6.4 3.8zm17.2-7.4c24.5 23.3 48.9 46.6 73.3 69.9 3.5 3.3 8.7-2 5.2-5.2-24.5-23.3-48.9-46.6-73.3-69.9-3.4-3.4-8.6 1.9-5.2 5.2z"/><path d="M470.8 513.9c27.1 0 54.3 0 81.4-.1 4.8 0 4.8-7.4 0-7.4-27.1 0-54.3 0-81.4.1-4.8 0-4.8 7.4 0 7.4zm104.2-2c16.9-9 33.7-18.1 50.6-27.1 4.2-2.3.5-8.7-3.8-6.4-16.9 9-33.7 18.1-50.6 27.1-4.2 2.3-.4 8.7 3.8 6.4zm-64.6 136.5c6.6-4.5 14.6-4.2 21 .4 1.7 1.2 4.1.2 5.1-1.3 24.4-37.7 48.7-75.3 73.1-113 6.9-10.7 13.9-21.4 20.8-32.1 2.6-4-3.8-7.8-6.4-3.8-24.4 37.7-48.7 75.3-73.1 113-6.9 10.7-13.9 21.4-20.8 32.1 1.7-.4 3.4-.9 5.1-1.3-8.4-6.1-19.9-6.2-28.5-.4-4 2.7-.3 9.1 3.7 6.4z"/><path d="M564.7 508.1c-14 29.9-26.8 60.3-38.3 91.3-1.7 4.5 5.5 6.4 7.2 2 11.3-30.3 23.8-60.2 37.6-89.5 1.9-4.4-4.5-8.1-6.5-3.8zm-101.3 8.8c9 17.6 18 35.3 27 52.9 2.2 4.3 8.6.5 6.4-3.8-9-17.6-18-35.3-27-52.9-2.1-4.2-8.5-.5-6.4 3.8zm7.7-96.3c24-4.5 48.4-6.2 72.8-5 4.8.2 4.8-7.2 0-7.4-25.1-1.3-50.2.6-74.8 5.2-4.6 1-2.6 8.1 2 7.2z"/></svg>
+ data/KeyTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st1{opacity:.7}.st2{fill:#ffeabf}</style><path d="M561.6 684.1c-1.1-8.8-3.6-19.4-12.1-21.9-2.7-.8-5.6-.6-8.4-.3-10.3 1-20.6 2.7-30.8 5 6.4-50.6 16.7-146 5.9-167 21-1.9 41.7-8.7 57.4-22.5 7.1-6.3 13-14.2 17-23 3.2 1.2 6.5 1.2 9.7-.4 9.8-21.8-.7-48.6-18.9-64.1-18.2-15.5-42.4-21.8-66-25.8-9.6-1.6-55.5-6.7-73.6 2.8-4.8-.8-10.3 1.4-14.8 4-12.9 7.6-24 18.1-32.4 30.5-8.1 12-13.7 26.8-10.8 41 2.9 13.8 13.5 25 25.8 31.8 12.4 6.8 26.4 9.8 40.2 12.5 8.8 1.7 18 3.1 26.5.8 1.8 3.5 4.7 6.6 8.1 8.6 3.9 2.3 8.3 3.4 12.8 3.9-28.5 24.5-24 141.4-24.7 156.5-.8 17-1.5 34.6 4.2 50.6 1.8 5.1 4.8 10.4 9.9 12 5.5 1.7 11.7-1.7 14.8-6.6 1.4-2.1 2.4-4.5 3-7 13.3.3 26.7-.2 40-1.3 5.7-.5 12.2-1.6 15.4-6.4 2.9-3.9 2.4-9.1 1.8-13.7zm-66.8-219.9c-8.4.9-16.9.1-24.7-2.9-16.6-6.4-39.5-10-44.3-16.8-5.5-7.8-3.6-26.3.1-35.1 3.4-7.8 11.6-12.2 17.6-18.2.7-.7 1.4-1.5 2-2.3 21.6 8.3 67.9 4.6 76.7 4.8 17.4.4 37.8 2.4 46.8 17.3 5 8.3 5 18.6 8 27.8-4.7 8.3-12.7 15.3-21.5 19.2-15.6 6.8-33.2 6.5-50.2 5.9-3.4-.2-7-.1-10.5.3z" opacity=".7" fill="#ffc400"/><path d="M476.1 357.5c-37.6-2.5-81.2 12.4-97.2 49.3-6.7 15.6-8.2 33.8-3 50.1 6 18.7 20.3 31 38.4 37.7 11.6 4.3 24.1 6.4 36.2 8.6 13.7 2.5 27.4 4 41.2 1.3 5.7-1.1 3.3-9.8-2.4-8.7-11.1 2.1-22.5 1-33.6-.9-9.9-1.7-19.9-3.5-29.5-6.1-17-4.6-32.7-13.2-40-30.1-6.1-14.1-5.6-30.5-.5-44.8 5.7-16 18.3-28.4 33.1-36.4 17.5-9.4 37.7-12.5 57.3-11.1 5.8.5 5.8-8.5 0-8.9z"/><path d="M463 393.5c-12 2.8-24.9 6.1-33.2 15.9-7.1 8.4-9.4 19.9-3.6 29.7 6.2 10.5 18 15.2 29.4 17.1 14 2.3 28.4 2.9 42.5 3 14 .1 28.4.1 42.3-1.8 10-1.4 20.5-4.6 26.9-13 6.5-8.5 6.4-19.7 1.8-29.1-5-10.4-14.8-16.9-25.4-20.5-14-4.7-29.9-5.4-44.5-5.7-17-.4-33.9 1-50.6 3.8-5.7 1-3.3 9.6 2.4 8.7 23.7-4 48-4.7 71.9-1.9 9.9 1.1 20.3 3.1 28.8 8.8 7.4 5 13.2 14.2 11.7 23.4-3.2 20-35.4 17.8-49.8 18.2-11.6.3-23.1.2-34.7-.5-11.2-.7-24-.9-34.3-5.8-10.5-4.9-16.6-16.1-9.5-26.5 6.8-9.9 19.5-12.5 30.3-15 5.6-1.4 3.2-10.1-2.4-8.8z"/><path d="M472.3 364.7c20.3.1 40.6 1 60.8 3 9.8 1 20.5 1.3 30 4.1 8.8 2.6 14.9 10.3 20.8 16.8 11.1 12.1 22.2 26.6 20.1 44.1-2.1 17.1-14.7 31.9-26.5 43.5-13.7 13.5-34.2 25.4-53.6 16.7-5.2-2.3-9.8 5.4-4.5 7.8 18.6 8.2 38.8 2.6 54.3-9.3 15-11.4 29.2-27.5 36-45.2 7.3-18.8 1.9-37.1-10-52.6-5.8-7.6-12.3-14.9-19.2-21.4-8.2-7.6-17.2-9.8-28-11.2-26.6-3.4-53.4-5.1-80.3-5.2-5.7-.1-5.7 8.9.1 8.9zm-3.6 133.6c-1.4 38.1-2.9 76.1-4.3 114.2-.7 19.2-1.5 38.4-2.2 57.6-.3 8.8-1 17.7-.9 26.5.1 6.3.8 12.8 3.6 18.5 8.2 16.4 27.6 13.1 41.8 8 5.4-1.9 3.1-10.6-2.4-8.7-11.9 4.2-28.9 8.4-33-7.9-1.6-6.3-1-13.1-.8-19.5.3-8.6.6-17.2 1-25.8 1.3-34.8 2.6-69.5 3.9-104.3.7-19.5 1.5-39.1 2.2-58.6.4-5.8-8.6-5.8-8.9 0z"/><path d="M514.4 504.6c-.8 71.3-4.8 142.5-11.9 213.4h9c0-2.1.1-4.2.1-6.3.1-5.8-8.9-5.8-9 0 0 2.1-.1 4.2-.1 6.3-.1 5.9 8.4 5.7 9 0 7.2-70.9 11.1-142.1 11.9-213.4 0-5.8-9-5.8-9 0z"/><path d="M518.2 661c6.9-1.9 13.9-3.2 21-3.7 5-.4 11.3-1 15.8 2 5.2 3.4 5.2 12.6 6.2 18.1 1.1 6 2.6 12.2 3 18.3.3 4.4.3 10-2.8 13.5-4.1 4.7-11.5 3.1-16.9 2.4-14.1-1.8-28.1-.6-41.7 3.6-5.5 1.7-3.2 10.4 2.4 8.7 8.9-2.8 18-4.3 27.4-4.2 8 .1 16.4 2.6 24.4 1.3 13.9-2.2 17.2-16 15.9-28.1-.9-8-2.7-15.9-4.1-23.8-1.2-6.7-2.7-13.3-8.7-17.3-5.3-3.5-12-4-18.2-3.7-8.8.4-17.6 1.9-26.1 4.2-5.6 1.5-3.2 10.2 2.4 8.7z"/><g class="st1"><path class="st2" d="M485.1 564.1c-2.6 31.7-3.5 63.4-2.7 95.2.1 5.8 9.1 5.8 9 0-.8-31.8.1-63.5 2.7-95.2.5-5.7-8.5-5.7-9 0z"/></g><g class="st1"><path class="st2" d="M411.8 398.8c-13.9 8.4-20.5 26.5-14.3 41.7 2.1 5.3 10.9 3 8.7-2.4-4.7-11.5-.6-25.1 10.2-31.5 4.9-3 .4-10.8-4.6-7.8z"/></g></svg>
+ data/KittenTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0,.st6{opacity:.7;fill:#ffc161}.st6{fill:#ffaca1}</style><path class="st0" d="M465.5 477.3c2.9-11.7 7.8-23 14.3-33.1 2.2-3.4 4.9-6.9 8.9-7.5 7.9-1.3 12.1 8.8 13.5 16.6 4.6 25.2 10.3 50.1 17.1 74.8 1.7 6.3 4 13.2 9.6 16.5 4.6 2.7 10.8 2.5 14.8 6.1 4.6 4.3 3.8 11.6 4.9 17.8 2.5 14.5 17.2 24.6 31.9 25.5s28.8-5.8 40.5-14.6c18.3-13.8 32.8-38.7 22.1-58.9-2.7-5.1-7-9.8-7.6-15.5-.5-4.4 1.2-8.7.8-13.1-1.4-13.7-19.7-16.5-31.2-24-13.2-8.7-18.1-26.5-15.9-42.2s10.2-29.9 18-43.7c3.5-6.1 7.1-12.4 12.8-16.6s14-5.5 19.7-1.3c2.4-7.7 4.8-15.9 3-23.8s-9.7-15-17.5-13c-3.4.9-6.2 3.2-8.8 5.5-23.1 20.1-44.5 42.1-64 65.8-2.7 3.3-6.3 6.9-10.4 6-5.4-1.2-6.5-8.9-11.3-11.5-9.2-4.9-19.1 12.5-28.6 8.1-2.5-1.2-4.1-3.6-6-5.6-6.5-6.8-17.2-8.1-26.1-5.4-9 2.7-16.6 8.6-23.5 14.9"/><path class="st0" d="M471.3 500.4c2.3 13.6 5.9 29.1-2.4 40.2-6.3 8.5-18.5 12.7-21.6 22.8-3.5 11 5.8 22.2 5 33.6-.3 5-2.6 9.8-5.4 14-10.7 16-30 25.8-49.3 25s-37.6-12.4-46.9-29.3c-4.3-7.8-6.7-16.8-12.7-23.5-3.2-3.6-7.4-6.5-9.2-11-2.9-7.2 1.7-15 3.6-22.5s-2-18.4-9.6-16.9c-2.8-5.9.4-13 4.5-18.2 4-5.2 9.1-10 10.5-16.5s-3.5-14.6-10-13.2c18.4-22.7 37.9-49.4 33.2-78.2-3.7-22.8-21.7-40.5-29-62.4 17.1-2.5 32.7 9.5 45.1 21.5 11.9 11.4 24.5 24.3 41.7 26.7 14.1 2 27.9-5.5 38.6 7.1 18.8 22.1 9.3 73.9 13.9 100.8z"/><path d="M433.8 478.2c-6.4 2.9-10.3 9.9-11 16.9-.6 7-1.9 15 1 21.4 1.2 2.6 6 4.2 8.5 5.5 3.8 2 8.6.1 12-2.6 9.5-7.6 14.1-26.2 7.5-36.5s-24.5-8.4-31.8 1.4m121.7-7.5c-4.6 8.2-8.5 17.7-7.5 27.3 1 9.6 8.5 18.9 17.2 17.9 2.8-.3 5.4-1.6 7.7-3.5 9.5-7.6 10.7-28.9 2.9-38.6-7.8-9.7-22.9-5.6-30.8 4" fill="#181a1a"/><path d="M432.8 490.1c-.3.5.4-.4.6-.5-.5.3.8-.2 0 0-.3.1.9 0 .1-.1-.3 0 .8.2.1 0-.2-.1-.1 0 .3.2-.1-.1-.2-.1-.4-.2-.5-.4.5.5.1 0 .1.1.2.2.3.4-.2-.3-.1-.2.1.3-.2-.5 0 .6 0 .8.2-.7-.4.7 0 .1-.5.9.2-.1-.5.6.1-.1.9-.5-.1 0 .8-.4-.1.1-.1 0 0 0 .6-.1.6 0-.6-.1-.7-.1-.3 0 .1 0 .1 0 .2.1-.5-.2-.6-.3-.3-.1-.4-.3-.5-.4-.3-.2s.1.1-.2-.3c.2.3.1.2-.1-.3.5 1.7 2.4 3 4.2 2.4 1.7-.5 3-2.4 2.4-4.2-.9-2.7-3.4-4.3-6.2-4.2-2.7.1-5.4 1.8-5.9 4.6-1.2 6.4 8.2 9.8 11.5 4.2.9-1.5.4-3.8-1.2-4.7-1.8-1-3.9-.6-4.9 1.1zm107.7-6.2c-2.8 5.4-3.6 11.3-2.2 17.2.6 2.6 5.1 3.6 6.3.8 2.1-4.9 2.7-9.7 2-15-.6-4.4-7.2-2.5-6.6 1.8.5 3.3 0 6.7-1.3 9.7 2.1.3 4.2.5 6.3.8-1-4.1-.5-8.2 1.5-11.9 1.9-3.8-4-7.3-6-3.4z" fill="#fff"/><path d="M423.9 543.8c13.6 5.9 30.8-.7 38.6-13.3 7.8-12.6 6.6-29.7-1.4-42.1-.9 9.4-4.1 18.6-9.5 26.4-3.5 5.1-8 9.7-13.8 11.9s-12.8 1.7-17.3-2.5c-7.5-7-4.5-28.1-3.4-36.9-22.8 5.6-8.6 49.9 6.8 56.5zm118.8-6.7c8.2 4.2 17.9 6.4 25.6 1 6.2-4.4 9.9-12.1 13.4-19.6 1.8-3.9 3.7-8 4.1-12.4 1-11.6-8.2-21.2-17.8-24.8-2.4 12.8-1.1 28.1-9.6 36.7-11.2 11.3-26.8-10-33.4-22.2 1.8 11.7 1 32.9 17.7 41.3z" opacity=".7" fill="#afed6d"/><path class="st0" d="M395.7 725.5c.8 10.3 10.9 17.4 14.6 27.1.7 1.9 1.2 3.9 2.3 5.5 2.3 3.2 6.6 4.2 10.5 4.9 5.9 1.1 11.8 2.1 17.7 3.2 16.4 3 34.5 7 44.3 20.5 8.5 11.7 8.3 27.4 6.4 41.8-1.1 8.8-3.3 18.3-10.5 23.6-5 3.7-11.5 4.5-17.6 5.1-9.5 1-18.9 2.1-28.4 3.1-14.4 1.6-30.2 2.8-42-5.5-.2-5.4 2.2-10.9 6.4-14.4-5.4 4.1-10 9.2-13.5 15-6 5.3-17.1 2.9-19.9-4.6s4.6-16.8 12.4-15.4c-17.6-21.7-24-51.9-16.9-78.9-5.8-1-6.9-9.6-3.4-14.2 3.5-4.7 9.5-6.6 14.7-9.2 5.3-2.6 10.6-6.9 10.7-12.7 0-3.2-1.5-6.1-2.9-9-6.4-13.4-11.3-32.3-7.1-46.8 10.4 1.8 12.6 16.1 17.2 24.3 3.6 6.5 7.7 7.4 8.8 15.2 1.2 6.9-4.3 14.1-3.8 21.4z"/><path d="M421.8 645.4c-1.5 1.5-3 2.9-4.5 4.4" fill="#ffc161"/><path class="st0" d="M546.8 758.2c-6.6 3.4-15.1 4.3-19.3 10.5-2.3 3.3-2.8 7.6-5.3 10.7-6.7 8.4-21.9 3.1-29.5 10.7-7.4 7.3-2 19.9-4.5 30-2.2 8.8-10.7 16.7-7.9 25.3 2.6 7.8 12.5 9.6 20.7 10.2 13 .9 25.9 1.8 38.9 2.7 20.2 1.4 40.6 2.8 60.5-.8 11.9-2.1 23.9-6 35.7-3.7 10.6 2.1 21.8 9 31.2 3.7 6.8-3.8 9.6-12.9 16.8-16 5.3-2.3 11.4-.6 17.1.3 21.8 3.2 43.2-7.2 61.9-19 9.4-6 19.3-13.5 21.5-24.4 2.2-11-9.3-23.9-19.2-18.8.3-3.8-.6-7.6-2.6-10.8-5.7 4-10.5 9.2-14.2 15.1 3.2-6.3-2.9-15.1-9.9-14.3 1.9 16.6-10.9 32-26.2 38.7s-32.6 6.5-49.3 6.3c10.3-15.2-2.6-34.7-10.3-51.4-6.1-13.2-8.8-28-7.8-42.6-10.6-7.2-23.5-7.6-35.4-4.2-2.7-4.7-14.9-4.7-20.5-4.1-9.8 1-10.8.6-17.4 10.3-8.1 12.1-11 28.2-25 35.6z"/><path d="M474.9 532.3c-7 15.7-29.2 23-30.8 40.2-.5 5.2 1.2 10.4 1.2 15.6-.1 14.5-12.9 25.6-25.6 32.7-12.7 7.1-27.1 13-35 25.2-9.9 15.4-6.2 35.6-2.1 53.5 4.3 18.7 9.7 39.1 25.4 50.2 12.8 9 29.5 9.6 43.8 15.8 24.6 10.6 41 37 67 43.2 5.4-15.9 14.8-30.4 27.1-41.8 15-14 34.9-24.4 42.6-43.3 2.6-6.3 3.8-13.6 8.7-18.4 3.3-3.2 7.8-4.9 11.6-7.4 14.5-9.5 16.8-33.1 4.3-45.2-3.2-3.1-7.2-5.6-9.6-9.4-9-14.1 9.6-30.5 10.5-47.2-13.3-10.1-35.3 7.1-48.3-3.5-10.2-8.4-5.6-27.8-16.8-34.7-4.1-2.5-9.1-2.5-13.6-4.1-10.5-3.8-16.2-15.6-17-26.8-.8-11.2 1.9-22.2 2.7-33.4 1.3-18.7-12.5-64.2-39.3-45-25.4 18.2 3.6 60.3-6.8 83.8zm-63 326c16.2 4.2 33.2 8.4 49.6 5.1 7.6-1.5 15.1-4.9 19.9-11-4.4-6.3-12.8-8.3-20.4-9.9-12.9-2.6-38.2-12.2-51.2-8.2-14.2 4.4-12.4 20.3 2.1 24zm207.8-29.5c14.5 19-2.7 20.6-20.8 23.4-16.6 2.6-27.9 6-23.3-13.1 2-8.5 13.4-36.2 20.8-40.7 20.3-12.7 16.5 21.5 23.3 30.4zM741 776.5c-10.5 10.5-8.2 30.8 4.5 38.6s31.8 1 36.7-13c1.2-3.3 1.6-7 .8-10.4-2.5-11-15.3-15.8-26.4-17.5-6-.9-13.7-3.2-13.8-9.2" fill="#fffcf7" opacity=".7"/><path class="st6" d="M490.1 562.7c-2.6-.7-5.2-1.5-7.9-1-2.6.5-5.2 2.5-5.3 5.2-.1 2.8 2.5 5.1 5.2 5.6s5.5-.3 8.2-1.2c2.9-.9 5.9-2.1 7.7-4.6s1.1-6.7-1.7-7.6"/><path class="st6" d="M479.8 575.4c-2.8 2.2-5.7 4.5-7 7.8s-.6 7.7 2.5 9.3c1.4.7 3.1.8 4.7.8l17 .3c1.8 0 3.7 0 5.4-.6 5.2-2.1 5.9-9.9 2.5-14.5-3.3-4.6-9-6.6-14.4-8.5"/><path d="M323.9 440.7c.8 4.2-1.4 8.4-2.3 12.5-.9 4.2.6 9.8 4.9 10.4 3.9-8 8.1-16.2 15.2-21.6 2.4-1.8 5.2-3.3 7.2-5.6 8.3-9.4-9-63.2-18.2-63.4-8.9-.1-7.8 16.7-8.3 21.1-1.8 14.2-6.1 25-10.9 39 5.1-.5 11.3 1.8 12.4 7.6zm313.9-66.2c-7.8 5.8-15.1 12.1-21.9 19.1-5.9 6-11.7 12.9-13 21.3-1.4 8.4 3.4 18.2 11.8 19.6 2 .3 4.2.2 5.8 1.5 1.3 1 1.8 2.7 2.3 4.3 1.5 5.1 3 10.3 4.5 15.4 1 3.6 3.1 8 6.8 7.9 1.3 0 2.5-.6 3.6-1.3 12.2-7.7 14.3-24.3 14.8-38.7.7-21.5.5-43.2-4.7-64.1-1.4-5.8-5.5-12.8-11.2-11.2" fill="#ffd4cf" opacity=".7"/><path d="M464.5 391c-2.8 12.5-.2 26.1 6.9 36.7 1.8-6.5 3.6-12.9 5.4-19.4 1.3-4.6 2.6-9.4 1.4-14.1s-5.8-8.7-10.4-7.6c-.4 1.4-.8 2.8-1.2 4.1m40.7-1.2c-.8 9.9-1.4 20.6 4 28.9 1.5 2.2 4 4.4 6.6 3.7 1.9-.6 3-2.6 3.8-4.5 3.8-9.4 4.3-20.1 1.5-29.9M347.9 527.8c2.1 3.7 7.1 4.3 11.3 3.6 4.2-.7 8.4-2.3 12.5-1.3 6 1.4 9.5 7.7 11.5 13.6-5.6 6.3-16.2 3.3-23.8 7-4.4 2.2-7.4 6.5-11 9.8s-8.9 6.1-13.4 4c-.2-.1-10.2-36.5-9.7-37.7 6.2-14.5 18.3-6.6 22.6 1zm282.1.2c1.4-4-.3-8.9-3.8-11.2-5 10.9-16.3 18.7-28.3 19.3-.7 4.4-.9 10 3 12.1 5.9 3.2 12.6-5.6 19.1-3.9 6 1.5 7.3 10.6 13.2 12.4 6.5-10.2 9.1-22.8 7-34.8M411.4 795c4.2 2.6 8.3 5.3 12.5 7.9 1.4.9 2.8 1.8 4.4 1.9 1.7.1 3.3-.6 4.9-1 8.1-2.2 17.6 3.2 19.7 11.4-13.5 1.6-27 3.2-40.4 4.7m-10.6-39.4c4.6-3.9 12.1-3.5 16.3.8-3.1 3.7-7.2 6.5-11.7 8.2m199.6-27.4c-6.7.6-13.2 3.5-18 8.1-3 2.8-4.7 8.8-.9 10.2 2.6 1 5.1-1.3 7.3-3 5.3-4 12.8-4.9 19-2.3m-6 12.1c-7.5 1.2-14.3 5.8-18.3 12.2 8.7-2.7 17.3-5.9 25.6-9.6m39.6-32.9c-9 2.9-15.8 11.3-16.8 20.7-.1 1.2-.1 2.5.5 3.4 1.7 2.5 5.6.7 7.8-1.3s5.2-4.6 7.8-3c2.6 1.7 1.6 6 3.5 8.4 1.7 2.1 5.1 2.1 7.3.7s3.7-3.9 5-6.2m-23.3-52.5c-6.9.3-13.2 5.7-14.6 12.5-.2 1-.3 2.1.1 3 1 2.3 4.1 2.5 6.6 2 6.8-1.4 12.9-5.4 16.9-11m50 76c1.2 4.7 3.5 9 6.9 12.4 1.2 1.2 2.6 2.4 4.2 2.7 4.7.9 8-5 7.6-9.8-.4-4.8-2.7-9.5-1.8-14.2m-370.6-38.2c10-.1 19.9 2.9 28.2 8.4 1.8 1.2 3.6 2.8 3.5 5-.1 2-1.9 3.4-3.5 4.6-6.3 4.5-12.7 9.1-19 13.7" fill="#cc8314" opacity=".7"/><path d="M316.9 494.5c.1.1.1.3.2.4-.1-.9-.2-1.8-.3-2.6.1-.2.2-.4.3-.7.8-.3 1.6-.7 2.4-1 1.3 1.1 1.6 1.1 1-.1-.1-.3-.2-.6-.4-1-.4-1.1-.8-2.3-1.2-3.4-.6-2-1.2-4-1.7-6-1-4.2-1.8-8.5-2.1-12.9-.8-8.7-.3-17.4 1.5-25.9.9-4.3-5.7-6.2-6.6-1.8-2.5 12.4-2.7 25-.4 37.4 1.1 5.8 2.4 12.4 5.1 17.6 1.2 2.2 3.5 3.8 6.1 2.7s3.2-3.8 2-6.1c-2-3.9-8-.5-5.9 3.4z"/><path d="M315.7 439.9c-2.4-.2-4.8-.8-7-2-1.9-1-4.7-2.6-5.8-4.5-.6-1.1-.2-.9 1-1.6 1.1-.6 2.2-1.2 3.4-1.7 2.7-1 5.4-1.4 8.2-1.3 4.2.1 4.3-5.3.9-6.7-4.4-1.8-7.4-7.1-6.6-11.8.9-5.1 5.3-8.6 10.2-9.3 4.4-.6 2.5-7.2-1.8-6.6-7.9 1.1-14.4 7.8-15.2 15.7-.9 8.2 4.3 15.5 11.7 18.6.3-2.2.6-4.5.9-6.7-4.7-.1-9.3.9-13.5 3-3.4 1.7-7.6 4.5-6.6 9 .8 3.8 4.8 6.9 7.8 8.9 3.7 2.4 7.9 3.6 12.3 4 4.5.2 4.5-6.6.1-7z"/><path d="M316.4 403.6c.5-12.4 1-24.8 1.6-37.1.2-6 .5-12 .8-18 .1-3.2.3-6.4.4-9.6.1-1.5.1-3 .2-4.5 0-.8.1-1.5.1-2.2v-1.1c.2-1.2-.6-1.3-2.4-.2l-2.4-2.4c0 .1.1.2.1.4 1.5 4.1 8.1 2.3 6.6-1.8-1-2.6-3.5-3.8-6-2.3-2.9 1.8-2.7 5-2.8 8-.3 7.9-.7 15.8-1 23.6-.7 15.8-1.3 31.5-2 47.3-.3 4.3 6.6 4.3 6.8-.1z"/><path d="M313.9 333.2c6.4 2.2 9.8 9.2 13 14.7 4.1 6.9 8 13.9 11.7 21 7.5 14.2 14.3 28.8 20.4 43.7 1.6 4 8.3 2.3 6.6-1.8-6.6-16.1-14-31.9-22.1-47.2-4-7.5-8.2-15-12.6-22.3-3.8-6.2-8.1-12.2-15.2-14.6-4.1-1.5-5.9 5.1-1.8 6.5z"/><path d="M315.2 337c30.9 8.8 60.1 23.7 85.2 43.6 7.2 5.7 14.1 11.9 20.6 18.4 3.1 3.1 8-1.7 4.9-4.8-23.5-23.4-51.6-42-82.3-54.6-8.7-3.6-17.5-6.6-26.5-9.2-4.3-1.2-6.1 5.4-1.9 6.6z"/><path d="M405.8 407c18.1-10.2 39-20.3 60.1-13.6 4.2 1.3 6-5.3 1.8-6.6-22.9-7.3-45.7 3.2-65.4 14.3-3.8 2.1-.4 8.1 3.5 5.9z"/><path d="M463.2 397c2.3-5.6 5.9-10.7 10.4-14.7.4-.4 1-.7 1.4-1.2.8-.3.9-.5.2-.7-.5-.3-.6-.3-.2.2.1 1.2 1.5 2.9 1.9 4 1.2 3.2 1.9 6.6 2 10.1.1 3.5 4.5 4.5 6.4 1.7 2.5-3.6 5.5-7.1 9.1-9.6 1.3-.9 2.4-2 2.8-.1.3 1.4-.2 3-.5 4.4-.8 2.9 2.4 5.4 5 3.9 4.4-2.5 9.1-5.4 14.3-5.5 3.6-.1 8 1.4 9.3 5 1.5 4.1 8.2 2.3 6.6-1.8-2.2-5.9-7.5-9.3-13.7-10-7.2-.8-14 2.9-20.1 6.3 1.7 1.3 3.4 2.6 5 3.9 1.5-5.2 1.2-13.8-6.1-14.1-3.9-.2-7.1 2.5-9.9 5-3 2.7-5.6 5.8-7.9 9.1 2.1.6 4.2 1.2 6.4 1.7-.2-5.7-3.1-24.6-12.5-20.6-3.9 1.6-7.3 5.8-9.8 9-2.9 3.7-5.2 7.7-6.9 12.1-1.5 4.2 5.1 6 6.8 1.9z"/><path d="M525.6 396.7c6-.1 11.8 1.1 17.2 3.8 3.9 2 7.4-3.9 3.5-5.9-6.5-3.2-13.4-4.9-20.7-4.7-4.4 0-4.4 6.9 0 6.8z"/><path d="M549.4 403.3a188.2 188.2 0 0 1 36.8-46c7.2-6.6 14.8-12.6 22.9-18 9.2-6.1 19.1-11.3 28.8-16.6 3.9-2.1.4-8-3.5-5.9-14.9 8.1-29.5 16.2-42.8 26.8-12.4 9.8-23.4 21.2-33.1 33.7-5.5 7.2-10.6 14.7-15.1 22.6-2.1 3.7 3.8 7.2 6 3.4z"/><path d="M632.5 322.3c4.1-.6 7.1 9.6 8.2 12.2 2.4 5.7 4.5 11.5 6.5 17.3 4 11.8 7 24 8.9 36.3 3.5 23.3 2.1 47.3-5.5 69.7-4.1 12.2-10.1 23.6-17.9 33.8-2.7 3.5 3.3 6.9 5.9 3.5 32.4-42.6 31.1-100.1 14-148.6-2.5-7.2-5.3-14.5-8.6-21.4-2.5-5.5-6.8-10.4-13.3-9.4-4.3.7-2.5 7.3 1.8 6.6z"/><path d="M625.2 359.9c-18.6 25.4-32.7 54-41.5 84.3-1.2 4.2 5.4 6.1 6.6 1.8 8.7-29.7 22.5-57.7 40.8-82.7 2.6-3.4-3.3-6.9-5.9-3.4z"/><path d="M589.8 451.9c4.9-2.2 10.3-3.1 15.7-2.9 1.3.1 2.7.2 4 .4.5.1 1.1.2 1.6.3-.2-2-.6-2.4-1.3-1.2-1 .4-2.4 2.4-3.2 3.1-1.1 1-2.1 2.1-3.2 3.1-2.2 2.2-.5 5.7 2.4 5.9 12.3.6 21.2 11.2 28.5 20 2.8 3.4 7.7-1.5 4.8-4.8-8.7-10.4-18.9-21.3-33.3-22 .8 2 1.6 3.9 2.4 5.9 1.8-1.8 3.7-3.6 5.6-5.4 1.3-1.3 2.6-2.6 3.1-4.3 1.2-4-2.1-6.4-5.6-7-8.5-1.5-17.1-.3-25 3.1-4 1.6-.5 7.5 3.5 5.8zm-226-24.2c-7.9 2-15 6.3-20.4 12.3-2.1 2.3-.5 5.6 2.4 5.9 2.8.3 5.6.5 8.4.8-1-1.7-2-3.4-3-5.2-8 12.3-16.7 24.1-26.1 35.3-2.8 3.4 2 8.2 4.8 4.9 9.8-11.7 18.9-23.9 27.2-36.7 1.5-2.4-.5-4.9-3-5.2-2.8-.3-5.6-.5-8.4-.8.8 2 1.6 3.9 2.4 5.9 4.7-5.2 10.6-8.8 17.4-10.6 4.4-1.1 2.6-7.7-1.7-6.6zm27.6 79.6c4.6-13 16.5-21.7 29.5-25.4 7.3-2.1 14.9-2.7 22.4-2.5 6.5.2 15.2 1.4 16.7 9.1.8 4.3 7.4 2.5 6.6-1.8-1.7-8.8-10.3-12.9-18.4-13.8-8.9-1-18.4-.3-27.1 1.9-16.1 4-30.6 14.6-36.2 30.6-1.6 4.2 5 6 6.5 1.9z"/><path d="M421.8 477.3c-12.5 4.4-20.9 15.9-22.4 28.9-1.6 13.4 3.6 29 14.1 37.8 11 9.3 27.3 8.6 39.6 2.1 12-6.3 19.9-18.5 21.5-31.9 1.7-15.1-5.7-29.8-18-38.4-3.6-2.5-7.1 3.4-3.5 5.9 8.8 6.1 14.5 16.3 14.9 27 .3 11.1-4.9 22.3-14 28.8-9 6.4-22.7 9.5-32.8 3.6-9.5-5.6-14.7-18-15.1-28.6-.5-12 5.7-24.5 17.6-28.6 4-1.5 2.3-8.1-1.9-6.6z"/><path d="M426.4 478.6c-7.6 5.2-10 14.1-10.4 22.9-.4 8.3.8 18.4 7.7 24.1 7.4 6.1 18.1 4.4 25.1-1.5 7.5-6.4 11.3-17.4 12.1-26.9 1-11.2-5.2-21.5-16.1-24.9-4.2-1.3-6 5.3-1.8 6.6 9.9 3.1 12.4 13.1 10.4 22.3-1.9 8.8-6.4 19.2-16.1 21.3-9.7 2-13.8-7.1-14.3-15.2-.5-7.5 0-17.9 6.9-22.6 3.6-2.6.2-8.6-3.5-6.1zm111.3-3.1c-13.5 13.1-12.8 36.6 2.1 48.3 3.4 2.7 7.5 4.9 11.9 5.4 5.1.6 8.3-2.5 11.2-6.2 6.1-7.8 10.6-17.3 10.6-27.3 0-9.5-4.2-19.8-13-24.5-3.9-2.1-7.4 3.8-3.5 5.9 7.4 4 10.2 13.2 9.5 21.1-.5 5.1-2.3 10-4.8 14.3-1.2 2.2-2.7 4.3-4.2 6.3-1.3 1.6-2.6 3.7-4.9 3.5-8.3-.5-15.1-9.6-17-17-2.3-8.8.4-18.8 6.9-25.1 3.2-3-1.6-7.8-4.8-4.7z"/><path d="M533.2 526.2c-5.4.4-7-8.5-7.7-12.4-1-6.2-.5-12.6 1.4-18.6 3.3-10.3 12.3-19.8 23.6-20.4 6.4-.3 12.5 2.2 17.8 5.5 5.4 3.3 10.9 7.5 13.5 13.4 4.9 10.8 2 24.6-4.9 33.8-8.3 11-22.8 14.9-35.5 9.5-1.7-.7-3.8.8-4.2 2.4-.6 2 .7 3.5 2.4 4.2 13.9 5.9 30.5 1.9 40.5-9.3 9.7-10.9 14-27.6 8.7-41.5-2.9-7.7-8.8-13-15.5-17.4-6.3-4.2-13.5-7.4-21.1-7.5-14.5-.3-26.6 10.6-31.4 23.6-3 8.2-3.4 17.3-1.6 25.9 1.4 6.8 5.6 16.2 13.9 15.6 4.5-.3 4.5-7.2.1-6.8z"/><path d="M537 532.3c-5.3 3.3-9.1 8.2-11.1 14.2-1.4 4.2 5.2 6 6.6 1.8 1.4-4.2 4.2-7.7 8-10.1 3.7-2.3.3-8.2-3.5-5.9zm-70.2 2.8c3.2 1.9 5.8 4.7 7.2 8.2.7 1.7 2.3 2.9 4.2 2.4 1.6-.5 3.1-2.5 2.4-4.2-2-5.2-5.5-9.5-10.3-12.3-3.9-2.2-7.3 3.7-3.5 5.9zm8.1 31.9c5.5.5 10.5-1.5 15.6-3.1 3.7-1.1 8.7-2.3 12 .5 3.4 2.8 8.2-2 4.9-4.8-4.2-3.5-9.2-4.1-14.5-3.3-6.1 1-11.6 4.5-18 3.8-4.4-.3-4.3 6.5 0 6.9z"/><path d="M473.5 565.2c3.3 5.5 7.7 11.4 14.9 11.4 3.4 0 6-1.8 8.4-4 2.8-2.7 5.5-5.5 8.2-8.2 3.1-3.1-1.7-8-4.8-4.8-2 2-4 4-6 6.1-1.4 1.4-2.9 3.5-4.9 4.1-4.6 1.2-7.9-4.7-9.7-7.9-2.5-3.9-8.4-.4-6.1 3.3z"/><path d="M472.4 592.3c3.2-2.1 6.5-4.3 9.7-6.4 2.6-1.7 6-5 9.4-4.6 3.4.4 7.1 2.7 10.2 4 3.9 1.6 7.7 3.2 11.6 4.8 4.1 1.7 5.9-4.9 1.8-6.6-4.2-1.8-8.4-3.5-12.6-5.2-3.8-1.6-7.9-3.9-12.1-3.9-4 0-7.2 2.6-10.3 4.7-3.7 2.4-7.4 4.9-11.1 7.3-3.7 2.4-.3 8.4 3.4 5.9zm1 15.3c10.7 6.8 25.2 5.3 34.3-3.4 3.2-3-1.6-7.9-4.8-4.8-7 6.6-18 7.5-26 2.3-3.8-2.4-7.2 3.5-3.5 5.9zm-37.2-40.7c-36.9 6.4-73.1 16.6-107.8 30.7-9.9 4-19.6 8.3-29.3 12.9-4 1.9-.5 7.8 3.5 5.9C336 600.5 371 588.2 407 579.8c10.3-2.4 20.6-4.5 31-6.3 4.4-.7 2.5-7.4-1.8-6.6zm13.3 6.3c-32.2 10.5-62.8 26.2-89.9 46.5-7.6 5.7-15 11.8-22.1 18.1-3.3 3 1.6 7.8 4.8 4.8 24.4-22 52.4-39.8 82.5-52.9 8.7-3.8 17.5-7 26.5-10 4.2-1.2 2.4-7.8-1.8-6.5zm101.4 7c32.5-.5 64.5 9.9 90.7 29.3 3.5 2.6 7-3.3 3.5-5.9-27-20-60.5-30.8-94.1-30.2-4.5.1-4.5 6.9-.1 6.8zm12.3-18.2c41.4-10 86-5.5 124.5 12.6 4 1.9 7.5-4 3.5-5.9-31.3-14.7-66.3-21.1-100.7-18.1-9.8.9-19.5 2.5-29.1 4.8-4.3 1-2.5 7.6 1.8 6.6zm-183.1 61.4c-24.3 54.2 4.5 110.3 20.4 162.3 4.7 15.3 10 32.3 6.3 48.3-1 4.3 5.6 6.1 6.6 1.8 3.2-14 .3-28.1-3.3-41.7-3.8-14-8.6-27.8-13.4-41.5-9.2-26.4-18.6-53.3-19-81.6-.3-15.2 2.2-30.4 8.4-44.3 1.7-3.9-4.2-7.4-6-3.3z"/><path d="M417 830.7c-8.8-3.8-19.5-1-25.2 6.9-3 4.1-4.2 9.3-4 14.4.2 4.7 1.1 10.7 5.8 13 4 1.9 7.5-4 3.5-5.9-2.5-1.2-2.5-6-2.4-8.4 0-3.4 1-6.9 3.1-9.6 3.5-4.4 10.6-6.7 15.8-4.4 4 1.7 7.5-4.2 3.4-6z"/><path d="M418.6 838.1c-9.1 6.3-10.9 19.5-2.2 27.1 3.3 2.9 8.2-1.9 4.9-4.8-5.1-4.5-4.9-12.4.8-16.3 3.6-2.6.1-8.5-3.5-6zm27.7 3.6c-5.7 8.4.3 18.9 9.2 21.6 4.2 1.3 6-5.3 1.8-6.6-4.9-1.5-8.2-6.9-5.1-11.5 2.5-3.7-3.4-7.2-5.9-3.5z"/><path d="M423.2 865.7c10.2 2.6 21.2 3.9 31.8 2.7 7.8-.8 16.6-3.2 20.7-10.5 2.2-3.8-3.7-7.3-5.9-3.5-3.2 5.8-11.3 7-17.3 7.4-9.3.6-18.5-.4-27.5-2.7-4.2-1.1-6 5.5-1.8 6.6zm65.4-86.7c6.1 8.8 10.7 18.4 13.5 28.8 1.1 4.2 7.8 2.5 6.6-1.8-2.9-10.9-7.8-21.1-14.2-30.4-2.5-3.6-8.5-.2-5.9 3.4zm-1 30.8c6.6 6.5 7.5 16.3 2.1 23.8-2.6 3.6 3.3 7 5.9 3.5 7.2-9.9 5.5-23.6-3.1-32.1-3.1-3.1-8 1.8-4.9 4.8z"/><path d="M486.1 827.2c2.9 12-3 24.1-12.8 31-3.6 2.5-.2 8.5 3.5 5.9 12.4-8.7 19.7-23.6 16-38.8-1.1-4.2-7.7-2.4-6.7 1.9zm26.4-46.8c.2 9.9 1 19.8 2.3 29.6.5 3.5.1 8.8 3.6 10.8 3.2 1.9 7.1-.1 6.3-4-.9-4.3-7.5-2.5-6.6 1.8 0 .1 0 .2.1.3l.9-3.3-.2.2c.8-.3 1.6-.7 2.4-1 .7 0 .8 1.1 1.2 1.1-.1 0-.3-2-.3-2.2-.2-1.7-.5-3.4-.7-5-.4-3.2-.8-6.3-1-9.5-.6-6.2-.9-12.5-1.1-18.8-.2-4.4-7-4.4-6.9 0zm18.5-2.1c0 11.8 0 23.5-.1 35.3 0 4.4 6.8 4.4 6.8 0 0-11.8 0-23.5.1-35.3 0-4.4-6.8-4.4-6.8 0z"/><path d="M536.9 788.1c-.6 5.5-1.9 10.9-3.7 16.2-1.4 4.2 5.2 6 6.6 1.8 2-5.9 3.3-11.8 3.9-18 .5-4.4-6.3-4.4-6.8 0zm63.6-167.2c9.6 12.2 15.8 27.3 16.9 42.9.5 7.7-.1 15.4-2 22.9-2.1 8.4-5.8 16.2-8.8 24.3-3.5 9.7-5.4 19.8-5.7 30.1-.1 4.4 6.7 4.4 6.8 0 .3-9.5 2.1-18.8 5.3-27.8 3.1-8.6 7-16.8 9.2-25.7 3.7-15.6 2.6-32.3-3.1-47.4-3.3-8.8-8-16.8-13.8-24.2-2.7-3.4-7.5 1.5-4.8 4.9z"/><path d="M613.1 672.6c-2.5 21.1-4 42.2-4.4 63.4-.4 19.7-.9 40 2.3 59.5 1.7 10.3 5 20.3 10.5 29.2 2.3 3.7 8.3.3 5.9-3.5-9.8-15.7-11.2-34.1-11.8-52.1-.6-20.6-.2-41.3 1.1-61.8.8-11.6 1.8-23.2 3.2-34.8.6-4.3-6.3-4.2-6.8.1z"/><path d="M614 827.8c5.1-.8 11.4 1.3 14.1 5.9 2.8 4.6.4 10.2-3.8 13-3.7 2.4-.2 8.4 3.5 5.9 7.1-4.7 10.7-13.8 6.6-21.7-4.1-7.9-13.9-10.9-22.2-9.7-4.3.7-2.5 7.3 1.8 6.6z"/><path d="M608.8 839.1c2.6 1.4 6.9 3.4 7.7 6.6.7 2.5-2 4.6-4.3 3.8-4.2-1.4-6 5.2-1.8 6.6 5.8 1.9 12.2-2.3 13.1-8.3 1-7-5.8-11.8-11.2-14.6-3.9-2.1-7.4 3.8-3.5 5.9z"/><path d="M581.4 836.5c-4.3 7.2-1.8 16.3 5.1 20.9 6.6 4.4 16.4 4.1 22.8-.6 3.5-2.6.1-8.5-3.5-5.9-4.1 3-10 3.7-14.6 1.4-4.6-2.3-6.7-7.8-4-12.3 2.4-3.8-3.5-7.2-5.8-3.5zM385.9 726.2c-10.7 1.7-20.9 6.2-29.2 13.3-3.2 2.7-8.5 7-8.3 11.6 0 2.4 1.8 4.4 4 5.1 1.2.4 4.7.2 5.3.8-.2-1.4-.4-2.8-.5-4.2-2.3 3.4-4.5 6.8-6.8 10.1-1.9 2.9-4.7 5.9-5.6 9.3-.7 2.6-.1 5.5 2.4 6.9 1.3.8 2.8.9 4.3.7 1.1-.2 2.6-1.1 3.6-.7-.8-1.1-1.7-2.2-2.5-3.3-2.6 20.9 6.5 41.6 21.8 55.7 3.2 3 8.1-1.8 4.9-4.8-14.1-13-22.1-31.6-19.8-50.8.2-1.6-1.2-2.8-2.5-3.3-1.6-.6-4.4-.6-5.9.4-1.1.1-1 .6.2 1.5.1-.4.2-.7.4-1 .8-.7 1.3-2 1.9-2.8 3.2-4.8 6.4-9.5 9.6-14.3.8-1.2.5-3.1-.5-4.2-1.2-1.2-2.5-1.8-4.2-2-.9-.2-2-.4-2.9-.3-.3 0-.7-.1-1-.2.2.5.5.9.7 1.3.3 0 3.3-3.9 3.8-4.4 1.5-1.5 3.2-2.9 5-4.2 7.1-5.1 15.2-8.2 23.8-9.6 4.2-.6 2.3-7.3-2-6.6z"/><path d="M384 828.8c-6.9.7-14.5 1.4-20.5 5.2-5.1 3.3-9.3 9-7.9 15.4 1.3 6 7.1 9.6 12.5 11.3 7.5 2.4 15.6 1.3 23.4 2.1 4.4.5 4.4-6.4 0-6.8-5.9-.6-11.9 0-17.8-1-3.9-.6-9.3-2.2-11.1-6.1-1.9-4 2.3-7.9 5.5-9.6 4.8-2.6 10.6-3.1 15.9-3.7 4.4-.4 4.4-7.3 0-6.8zm238.7-113.4c7.2-3.5 17.2-5 24.3-.5 6.2 4 7.1 13.1-.2 16.4-2.4 1.1-2.1 4.8 0 5.9 8.9 4.9 14.8 14.9 11.9 25.1-.5 1.7.6 3.9 2.4 4.2 5.2 1 7.1 6.6 8.5 11.1 1.6 4.9 1.6 9.7 1 14.8-1.2 9.8-5.1 19.2-11.3 26.9-2.7 3.4 2.1 8.3 4.8 4.8 7.8-9.8 12.4-21.2 13.5-33.6.6-6.5-.3-12.4-2.8-18.4-2.4-5.7-5.3-11-11.9-12.2l2.4 4.2c3.8-13.1-3.5-26.5-15-32.8v5.9c10.5-4.7 11.1-19 2.9-26.2-9.3-8.1-23.5-6.5-33.9-1.5-4 1.9-.5 7.8 3.4 5.9z"/><path d="M649.5 828.3c6.3-4.9 16.4-6.2 23.4-2 6 3.7 7.7 12.1 2.1 16.9-3.4 2.9 1.5 7.7 4.8 4.8 8.6-7.3 6.4-20.5-2.2-26.8-9.7-7-23.9-4.8-32.9 2.2-3.5 2.7 1.3 7.5 4.8 4.9z"/><path d="M656.2 839.2c1.5 2.2 4.4 6.2 3.3 9.1-1.3 3.3-8 2.7-10.7 2.8-10.2.6-20.3 1.2-30.5 1.8-4.4.3-4.4 7.1 0 6.8 6.5-.4 12.9-.8 19.4-1.2 6.3-.4 12.8-.3 19-1.3 4.8-.8 9-3.7 9.6-8.8.6-4.6-1.7-9.1-4.2-12.8-2.4-3.5-8.3-.1-5.9 3.6zm-110.6-36.1c4.4 0 4.4-6.8 0-6.8s-4.4 6.8 0 6.8z"/><path d="M542 800.8c-2.1 9.5-1.4 19.1.9 28.5 1.8 7.6 4.7 15 9.5 21.2 9.4 12.2 26.5 18.2 41 11.7 4-1.8.5-7.7-3.5-5.9-11.9 5.4-26.3-1.2-33.2-11.4-3.8-5.6-5.9-11.9-7.4-18.4-1.8-7.8-2.4-15.9-.7-23.8 1-4.3-5.6-6.2-6.6-1.9zM384.5 654.2c-5.4 9.4-9.7 19.4-12.6 29.8-2.5 8.9-5.6 19.6.9 27.5 1.2 1.5 3.5 1.1 4.9 0 9.6-8.1 18.2-17.4 25.4-27.8-2-1.2-3.9-2.3-5.9-3.5-11.6 21.3-4.8 47.8 13.9 62.7 3.4 2.7 8.3-2.1 4.9-4.8-16.2-12.9-23-35.6-12.8-54.3 2.1-3.9-3.4-7.1-5.9-3.5-6.9 9.9-15.1 18.7-24.3 26.4h4.9c-2.4-2.9-2.1-7.1-1.5-10.6.7-4.5 1.9-8.9 3.2-13.2 2.7-8.8 6.4-17.2 11-25.2 2-3.9-3.9-7.3-6.1-3.5zM605.9 639c4.6 10.5 7 21.8 6.8 33.3-.2 9.2-1.9 18.7-9.4 24.7h4.8c-4.3-4.6-7.9-9.6-11-15.2-1.7-3-6.3-1.6-6.4 1.7-.6 19.6-12.6 36.8-28.9 47-3.7 2.3-.3 8.3 3.5 5.9 18.3-11.5 31.6-30.9 32.3-52.9-2.1.6-4.3 1.1-6.4 1.7 3.3 6 7.4 11.5 12 16.5 1.3 1.5 3.5 1.1 4.8 0 8.6-6.9 11.1-18 11.4-28.5.4-13-2.5-25.9-7.7-37.8-1.6-3.9-7.5-.4-5.8 3.6zm61.2 171.2c18.4 5.2 40.3 7.5 57-3.8 6.4-4.3 12-10.6 13.7-18.3 1-4.7-.3-9.2.2-13.9.5-4.6 4.4-7.2 8.7-8 4.3-.8 2.5-7.4-1.8-6.6-4.2.8-8.1 3-10.8 6.4-2.8 3.6-3.2 7.8-2.9 12.3.3 4 .5 7.7-1.1 11.4-1.5 3.5-4 6.4-6.9 8.8-14.8 12.8-37 10-54.3 5.1-4.2-1.2-6.1 5.4-1.8 6.6zm83.2-25c-.2-6.5 5.2-11.3 10.3-14.6 1.4-.9 2.8-1.8 4.3-2.6.3-.1.5-.3.8-.4 1.4-.3 1-1-1-2.1-.3.1-.7 1.9-.9 2.3-1.6 3.9-3.2 7.8-4.7 11.7-1 2.4 1.9 5 4.2 4.2 4.8-1.7 12.1-4.4 16.8-1.1 4.7 3.2 1.9 10.3.2 14.4-1.6 4.1 5 5.9 6.6 1.8 2.7-6.9 4.5-15.8-2-21.2-6.6-5.5-16.1-3.1-23.5-.6l4.2 4.2c1.2-2.9 2.3-5.7 3.5-8.6 1-2.4 2.7-5.2 2.2-7.9-1-6.3-8-3.8-11.5-1.7-8.1 4.7-16.6 12-16.4 22.2.2 4.3 7 4.4 6.9 0z"/><path d="M685.2 841.6c11.7 5.1 24.7 6.4 37.2 3.9 6-1.2 11.9-3.4 17.2-6.5 2.5-1.4 5.2-3.2 5.7-6.3.5-3.1-1.4-5.8-4.3-6.6-.3 2.2-.6 4.5-.9 6.7 20.6 0 42.4-11.6 49.7-31.7 1.5-4.2-5.1-6-6.6-1.8-6.2 17.1-25.7 26.6-43 26.6-3.9 0-4.7 5.7-.9 6.7-.1-1.5-.5-1.8-1.2-.8l-1.5.9c-1 .6-2 1.2-3 1.7-1.8.9-3.7 1.7-5.6 2.4-4.2 1.5-8.6 2.4-13 2.8-8.9.8-18-.4-26.2-4-4.2-1.6-7.7 4.3-3.6 6zm-256-501.4c1.7 27.9 3.4 55.8 5 83.7.3 4.4 7.1 4.4 6.9 0-1.7-27.9-3.4-55.8-5-83.7-.3-4.3-7.1-4.4-6.9 0zm8.4-1.1l7.2 77.1c.4 4.4 7.3 4.4 6.9 0l-7.2-77.1c-.5-4.3-7.3-4.4-6.9 0zm83.6-6.5c.8 26.8 1.7 53.6 2.5 80.4.1 4.4 7 4.4 6.8 0-.8-26.8-1.7-53.6-2.5-80.4-.1-4.4-6.9-4.4-6.8 0z"/><path d="M540.1 338.2c-2.9 21.8-6.5 43.4-11 65-.9 4.3 5.7 6.2 6.6 1.8 4.5-22.1 8.3-44.4 11.2-66.8.6-4.3-6.2-4.3-6.8 0zM435.3 441.1c-2.8-.1-2.2-4.7-1.3-6.2 1.4-2.3 4.1-3.8 6.8-3.9 6.3-.2 8.7 7.5 5.6 12.1-2.5 3.6 3.4 7.1 5.9 3.5 7-10.2-2.2-24.8-14.5-22.1-5.4 1.2-10.2 5.4-11.2 11-1.1 5.8 2.5 12.1 8.7 12.4 4.4.2 4.4-6.6 0-6.8zm90.2 5.3c-2.8-.9.8-5 1.8-5.8 1.9-1.7 4.9-4 7.3-1.9 5.1 4.4-.3 11.9-3 15.9-2.5 3.6 3.4 7.1 5.9 3.5 3.3-4.9 6.7-10.4 5.8-16.6-.8-5.1-4.5-10-9.8-10.5-5.6-.6-12.2 4.4-14.6 9.2-2.4 4.9-.6 11.1 4.8 12.7 4.1 1.4 6-5.2 1.8-6.5zM450.8 565c-5.8 7.5-5.7 19 1.8 25.5 7.3 6.3 19 5.5 25.5-1.5 3-3.2-1.8-8.1-4.8-4.8-4 4.3-11.1 5.3-15.8 1.5-4.5-3.6-5.4-11.3-1.8-15.8 2.6-3.5-2.2-8.4-4.9-4.9zm59.1 22.9c9.6 1.6 20.8-1.3 25.6-10.5 2.1-4.1 2.8-8.8 1.8-13.3-1-4.6-4.6-10-9.9-9.8-4.4.2-4.4 7 0 6.8 2.5-.1 3.5 5.2 3.5 6.9 0 2.8-.8 5.6-2.6 7.9-3.8 4.9-10.8 6.4-16.6 5.4-4.3-.7-6.2 5.9-1.8 6.6z"/><path d="M471.5 591.4c14.4-4.8 29.8-4.2 43.8 1.5 4.1 1.7 5.9-5 1.8-6.6-15-6.1-32.1-6.6-47.5-1.5-4.1 1.4-2.3 8 1.9 6.6zm143.7-178.8c21.3 6.2 41 17.2 57.5 32.1 3.3 3 8.1-1.9 4.8-4.8-17.3-15.7-38-27.3-60.5-33.9-4.2-1.3-6 5.3-1.8 6.6zm15.4-15.9c16.6-.7 33.1 3.2 47.6 11.4 3.8 2.2 7.3-3.8 3.5-5.9-15.5-8.7-33.2-13-51-12.3-4.5.1-4.6 6.9-.1 6.8zm-285.7 21.6c-20.5-5.7-42.7-2.8-61.1 7.9-3.8 2.2-.4 8.1 3.5 5.9 16.8-9.8 37-12.4 55.8-7.2 4.2 1.2 6-5.4 1.8-6.6zm-18.1 18.2c-18.5 2-35.1 12.3-45.1 28-2.4 3.7 3.5 7.2 5.9 3.5 8.5-13.5 23.2-22.9 39.2-24.6 4.3-.6 4.4-7.4 0-6.9zM488 860.4c4.4-1.5 8.7-2.9 13-4.4.1 0 4.7-1.1 4.7-1.2-.4-.7-.8-1.3-1.2-2-.3.6-.4 1.2-.4 1.8-.1.7-.1 1.4.1 2 .8 2.9 3.7 4.7 6.5 5.2 3.7.8 7-.9 10.3-2.2 4.3-1.7 8.4-.9 12.8.1 4.2 1 8.4 1.7 12.6 2.1 9.1.8 18.3 0 27.4-.8 4.4-.4 4.4-7.2 0-6.8-9.1.8-18.3 1.5-27.4.8-8.3-.7-17.2-5-25.5-2.6-1.7.5-3.3 1.3-5 2-.8.3-1.6.6-2.5.7-.7.1-1.5-.3-2.1-.2l-.6-.3c.1.8.2.8.4 0 .4-.6.3-2.1.2-2.7-.3-1.3-1.2-2.5-2.4-3.2-2.9-1.6-6.3-.5-9.2.5-4.5 1.5-9 3-13.6 4.5-4 1.5-2.2 8.1 1.9 6.7zM333.8 496c-10.8 12-20.5 24.8-29 38.5-1.4 2.3.4 5.1 3 5.2 8 .3 16 .7 24 1-.8-2-1.6-3.9-2.4-5.8-3.4 3.5-6.8 7.1-10.2 10.6-2.8 2.8-7.4 6.2-8.4 10.2-.9 3.7 1.2 7.2 4.4 8.9 3.8 2 8.1.8 11.9-.7 2.8-1.1 3.4-4.5.8-6.3-3.8-2.6-7.2 1.1-7.6 4.8-.5 4.6 3 9 5.2 12.8 5.7 9.3 12.5 17.8 19.7 26 13.5 15.5 27.6 33 47.1 41.1 10.6 4.4 22.5 5.8 33.5 2 4.1-1.4 2.4-8.1-1.8-6.6-16.7 5.8-34-2-46.7-12.8-6.7-5.7-12.6-12.2-18.5-18.7-6-6.6-12-13.3-17.5-20.3-3-3.9-5.9-7.8-8.5-12-1.4-2.1-2.6-4.3-3.9-6.5-.5-1-1.5-2.2-1.8-3.3 0-.1 0-.6-.1-.7v-.5c.4-1-.5-.8-2.7.6.3-2.1.5-4.2.8-6.3-1.7.7-5.5 2.7-7.2 1-1-1-.3-1.3.5-2.3 1-1.1 2.1-2.2 3.1-3.3 4.2-4.4 8.4-8.7 12.6-13.1 2.1-2.2.5-5.7-2.4-5.8-8-.3-16-.7-24-1 1 1.7 2 3.4 3 5.2 8.2-13.2 17.6-25.5 28-37.1 2.9-3.3-2-8.1-4.9-4.8zm296.4-.8c-1.9-3-5.2-3.8-8.4-2.3-3.5 1.7-1 7.3 2.6 6.3 8.9-2.5 18-2.7 26.9-.4l-2.4-4.2c-3.3 10-8.9 18.9-16.4 26.2-2.2 2.2-.5 5.7 2.4 5.8 3.7.2 8.1 2 9.4 5.8 1.1 3.2-.8 6.8-4.2 7.4 1.3 1.7 2.6 3.4 3.9 5-.5.8-1.4.3-1.8 1.2-.2.5-.1 1.3-.1 1.8-.1.8-.2 1.7-.3 2.5-.3 2-.7 4-1.2 5.9-1 3.8-2.3 7.4-3.9 10.9-3.3 7.1-7.8 13.6-13.2 19.2-11.7 12.3-27.2 20.2-43.5 24.2-9.8 2.4-19.9 3.5-30 3.6-4.4 0-4.4 6.9 0 6.8 21.3-.2 43-4.7 61.2-16 16.5-10.2 29.8-25.9 35.4-44.5 1.5-4.8 3.2-10.9 2.5-15.9-.7-5.4-7.4-8.4-10.8-3.3-1.8 2.8 1.2 5.5 3.9 5 6.8-1.1 10.8-8.8 9.2-15.2-1.8-7.2-9.2-11.1-16.1-11.4.8 2 1.6 3.9 2.4 5.8 8.3-8.2 14.5-18.2 18.2-29.2.6-1.7-.7-3.8-2.4-4.2-10.1-2.6-20.6-2.5-30.6.4.9 2.1 1.8 4.2 2.6 6.3-.3-.1-.6-.1-1-.2 2.2 3.9 8.1.5 5.7-3.3z"/></svg>
+ data/LightbulbTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M481.9 646.4c-8.5-1.1-17.5 3.8-21.3 11.5 6.1 3.3 10.5 9.4 11.9 16.1-4.8 1.3-8.9 5.3-10.1 10.2 1 4.6 4.5 8.6 8.9 10.3-.7 3.2-1.4 6.3-2 9.5 20.9 2.5 42.1 2 62.8-1.5 1-5.7-.1-11.7-3.2-16.6 4.5-1.7 9.1-3.3 13.6-5-2.5-9.2-3.8-19.4.9-27.7-26.6-5.1-53.8-7.4-80.8-6.7" opacity=".7" fill="#9fafb3"/><path d="M408.6 526.5c-25.7-38-23.5-93.8 4.1-130.3 27.7-36.5 78.1-51.2 119.9-36s72.6 58.6 75.7 105.2c.8 12-.1 24.3-4.4 35.5-6.3 16.6-19.3 29.2-29.4 43.6-11.4 16.3-19.2 35.4-22.7 55.3-1.9 10.7-2.5 21.7-6.3 31.8-9.6 25.2-27.9 20.3-47.6 13.3-11.1-3.9-18.9 4-27.7-5-12.8-13-17.7-46-24.6-62.3-8.4-19.9-25.1-33.6-37-51.1zm-39-146.9c-7.3-8.5-15.8-16.3-23.7-23.7-6.3-5.8-16-11.6-22.6-6.2-4.2 3.4-4.5 10.1-2 14.9 2.5 4.8 7 8.2 11.5 11.2 7.9 5.2 18.3 11.5 28.8 15.5 7 2.8 12.9-5.9 8-11.7zM401.4 267c20.2.6 35.6 18.2 46 35.6 2.3 3.9 4.2 9.5.7 12.4-1.9 1.6-4.7 1.5-7.2 1-20.1-3.3-36.8-21.3-38.6-41.5M508 301.8c-8.3-14.5-8.3-33.3 0-47.8 16 12.8 16.9 40.1 1.9 54-.9.8-2 1.7-3.2 1.8-1.9.1-3.4-1.6-4.5-3.1-5.3-7.5-9.3-16.3-9.4-25.5-.2-9.2 4-18.8 11.9-23.6M639.5 296c-11.1-.9-22.7 3-31 10.5-2 1.8-1.7 5 .6 6.3 5.9 3.6 13.2 4.8 19.9 3.1 6-1.5 11.3-5.4 14.8-10.5 2.7-3.8.3-9.1-4.3-9.4zm16.3 115.9c3.5-11.2 9.5-21.6 17.5-30.2 2.1-2.3 5-4.6 8-3.8 3 .9 4.2 4.4 4.6 7.5 1.5 15.1-9.4 30.5-24.1 34" opacity=".7" fill="#ffe30f"/><path d="M490.5 605.5c2.2-22.4 1.4-44.9-.5-67.3-1-11-2.2-21.9-3.4-32.9-1-9.2-1.7-18.7-5.7-27.1-3.5-7.3-10.3-13.5-18.5-14.7-8.2-1.2-15.8 3.4-19.7 10.5-8.6 15.9 2.7 34.1 15 44.5 12.4 10.5 28.7 16.5 45.1 16 16.4-.5 32.1-7.9 43.4-19.7 5.5-5.7 9.9-12.3 13-19.6 2.9-6.9 6.2-16.2 2.2-23.3-3.5-6.1-11-9.2-17.7-8.3-8.2 1.1-14.7 7.6-18 14.8-4.7 10-4.2 21.7-4.5 32.5-.3 12.4-.6 24.9-.7 37.4 0 12.2.2 24.4 1 36.6.7 10.6.5 22.9 6.7 32 2.3 3.5 8.1.3 5.7-3.2-4.9-7.3-5-16.6-5.6-25.1-.6-9.1-1-18.2-1.1-27.3-.3-18.7.2-37.4.7-56 .2-8.5.1-17.7 4.3-25.4 3.1-5.7 9-11 16-9.7 16.8 3.1 4.2 26.2-1.6 34.1-17.3 23.7-49.6 30.2-75 15.8-12.1-6.8-26.2-20.5-25.2-35.6.5-6.9 5.4-14.3 12.8-14.7 7.6-.4 13.8 6.2 16.5 12.7 3.7 8.8 4 19 5 28.4 1.2 10.5 2.3 21 3.1 31.5 1.7 21 2.2 42 .2 63-.5 4.2 6.1 4.3 6.5.1zm-95.2-334.2c7.7 22.5 21.1 49.9 48.8 50 4.2 0 4.4-6.5.1-6.6-24.4-.1-35.8-25.4-42.5-45.1-1.4-3.9-7.8-2.3-6.4 1.7zm107.8-9.9c-1.3 12.3-.7 24.5 1.7 36.6.8 4.1 7.2 2.5 6.4-1.6-2.3-11.5-2.7-23.2-1.5-34.9.4-4.2-6.2-4.3-6.6-.1zm106.4 57.4c10.6-5.5 21.1-11 31.7-16.5 3.8-2 .5-7.7-3.2-5.7-10.6 5.5-21.1 11-31.7 16.5-3.8 1.9-.5 7.6 3.2 5.7zm-237.6 58.6l-47.1-31.2c-3.5-2.3-6.9 3.3-3.4 5.6l47.1 31.2c3.5 2.3 6.9-3.3 3.4-5.6zM666 415.5c4.4-8.5 8.9-16.9 13.3-25.4 2-3.7-3.7-7.2-5.6-3.4-4.4 8.5-8.9 16.9-13.3 25.4-2 3.8 3.6 7.2 5.6 3.4z"/><path d="M457.9 632.5c3.5-29.8-14.1-56.3-31.7-78.5-17.6-22.3-37.5-45.1-40.3-74.7-2.5-26.8 8-53 23.2-74.5 7.9-11.2 17.3-21.4 27.7-30.4 4.2-3.6 7-5.8 12.1-8.5 26.1-13.9 58.6-17.5 86.9-8.7 21.8 6.8 40.2 20.8 54.8 38.1 9 10.6 17.2 22.4 21.6 35.7 4.2 12.9 5.4 26.7 4 40.2-1.4 13.7-5.4 27.2-11.9 39.3-6.6 12.4-15.5 23.3-23.7 34.6-8.3 11.4-16 23.4-20.2 37.1-4.6 15-5 30.9-6.6 46.5-.3 3.2-.2 7.2-1.7 10.2-.5 1-1.3 2-2.1 2.8-.5.5-1 .8-1.5 1.1-.8.5-.1-.2.2.5-1.5-3.9-7.9-2.3-6.4 1.6 2 5.2 6.9 5.6 11 2.4 5.5-4.2 6.1-10.2 6.8-16.6 1.9-16.9 2-34.3 7.8-50.5 10.1-28.3 34.9-48.3 46.5-75.9 11-26.1 12.3-57 1-83.1-5.7-13.1-14.9-25.1-24.5-35.5-8.4-9.2-18.1-17.4-28.8-23.8-31.5-18.9-70.4-20.4-104.3-7.2-5.2 2-10.2 4.3-15 7.1-6.9 4.1-12.9 9.7-18.6 15.3-20.2 19.8-37 45-43 73-2.9 13.5-3.2 27.4-.2 40.9 3.3 14.7 10.6 28.1 19.2 40.3 17.6 25 41.7 47.3 49.4 77.9 1.9 7.6 2.4 15.4 1.5 23.2-.3 4.1 6.3 4.2 6.8.1z"/><path d="M471.1 644.4c-8.5-.3-18.8 1.9-21.2 11.4-1.3 5 .4 10.3 3.6 14.3 3.6 4.5 9.1 6.3 14.4 7.9.3-2.1.7-4.3 1-6.4-8.6.9-14.7 9.7-12.9 18.2 1.6 7.5 9.6 13.1 16.9 9.3-1.3-1.7-2.6-3.5-3.9-5.2-6.6 6-3.4 17.5 3.8 21.5 4.7 2.6 10.3 2.3 15.5 2.1 6.6-.3 13.2-.7 19.8-1 9.3-.5 23.1 1.2 29.7-7.1 4.4-5.7 4.1-16.7-3.6-19.3-.3 2.1-.7 4.3-1 6.4 7.8-.5 16.1-3.8 18.5-11.9 1.8-6.2.1-14.4-6.6-16.8 0 2.1-.1 4.2-.1 6.3 5.8-1.9 8.3-7.6 8.4-13.3.1-6.8-2.9-13.1-8.8-16.7-6.9-4.2-15.4-3.9-23.2-4-10.2-.2-20.3.1-30.3 2.2-4.1.9-2.5 7.2 1.6 6.4 7.4-1.6 14.9-2.1 22.4-2.1 6.6 0 13.6-.4 20.1.9 5.3 1.1 10 3.9 11.3 9.4.7 3.2.9 9.5-3.1 10.8-3.1 1-3.2 5.2-.1 6.3 3.3 1.2 3 6.9 1.9 9.4-2 4.6-7.2 6.1-11.8 6.4-3.6.2-4.6 5.2-1 6.4 1.9.6 1.9 3.8 1.7 5.4-.4 3.1-2.5 5.2-5.4 6.3-3.1 1.2-6.6 1.2-9.8 1.3-4.5.2-8.9.5-13.4.7-7.9.4-16.2 1.6-24.2 1-3.6-.3-7-1.6-8.4-5.1-1-2.4-1.2-5.5.8-7.3 2.8-2.6-.6-6.9-3.9-5.2-3.5 1.8-6.8-2.1-7.3-5.2-.7-4 2.1-9.5 6.4-10 3.5-.4 4.8-5.3 1-6.4-6.4-1.9-16.4-6.3-13.3-15 2-5.6 9.6-6 14.6-5.8 4 .2 4.2-6.3-.1-6.5z"/><path d="M495.7 677.1c9.4-1.9 19.1-2.2 28.7-.7 4.1.6 6-5.7 1.8-6.3-10.8-1.7-21.5-1.5-32.1.7-4.2.8-2.6 7.2 1.6 6.3zm-36.6 25.8c13.2 2.5 26.3 1.1 38.6-4.2 3.9-1.7.6-7.4-3.2-5.7-10.5 4.5-22.3 5.8-33.5 3.6-4.2-.8-6.1 5.5-1.9 6.3zm24.2 24.6c10.8 11.4 31.6 8.9 39.2-4.9 2.1-3.7-3.5-7.1-5.6-3.4-5.6 10.1-20.9 12.1-28.9 3.7-2.9-3-7.6 1.6-4.7 4.6z"/><path d="M483.1 711.6c-.6 7.9 4.1 15.9 11.3 19.3 7.2 3.4 16.4 1.9 22.1-3.6 2.9-2.8 5-6.9 3.9-10.7-1.6-5.8-8.8-7.8-14.9-7.7-9.1.1-18.3 2.5-26.3 6.9" fill="#1f1f1d"/></svg>
+ data/LightningTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M431.1 481.9c4.8-14.2 25.1-18 37.9-10.2 12.8 7.8 19.2 23 22.6 37.6 3.4 14.6 4.7 30 10.9 43.6 8.2-5.6 18.3-8.3 28.2-7.7 14.1 56.6 23.6 114.3 28.5 172.4.1-73.8-1.6-147.6-5-221.4-8.9 8.2-19.7 14.4-31.4 17.7-4-24.4-8-48.8-11.9-73.2-.5-2.9-1.1-6.1-3.3-8.1-2.6-2.3-6.4-2.2-9.8-2-13.4.9-26.7 1.8-40 2.6-8.8.6 3.9-138.5-34.8-90.5-18.9 23.7 2.9 111.9 8.1 139.2z" opacity=".7" fill="#ffe600"/><path d="M403.5 339.5c5.3 49.8 10.7 99.6 16 149.4.3 2.4 2.3 4.7 5 3.8 18-6 36-12 54-18.1 4.8-1.6 2.8-9.3-2.1-7.6-18 6-36 12-54 18.1 1.7 1.3 3.3 2.5 5 3.8-5.3-49.8-10.7-99.6-16-149.4-.5-5-8.4-5.1-7.9 0z"/><path d="M473 469.2c3.8 36 10.1 71.6 19 106.7.9 3.6 5.3 3.5 7.2 1 8.3-11.2 20.3-18.7 33.9-21.6 5-1.1 2.9-8.7-2.1-7.6-15.7 3.4-29.1 12.4-38.6 25.3 2.4.3 4.8.6 7.2 1-8.7-34.4-15-69.3-18.7-104.6-.5-5.2-8.5-5.3-7.9-.2z"/><path d="M525.6 549.7c6.7 66.8 16.2 133.4 28.5 199.4.9 5 8.6 2.9 7.6-2.1-12.1-65.3-21.6-131.2-28.2-197.3-.5-5.1-8.4-5.1-7.9 0zm-73.1-210.2c-.9 33.8.6 67.6 4.3 101.3.3 2.8 3.2 5.2 6 3.4 17.1-11.1 36.8-16.6 57.2-16l-4-4c.4 30.6 2.4 61.1 5.8 91.5.4 3.4 4.1 5.3 6.8 2.8 4-3.6 8.2-6.8 12.9-9.4 1.9-1 3.8-2 5.7-2.9 1.6-.7 3.3-1.3 5-1.9 2.3-.3 3.8-1.6 4.6-4-4.9 1.4-2.8 9 2.1 7.6 8.8-2.5 3.7-13.5-4.4-12.5-11.5 1.6-23.2 10-31.5 17.6 2.2.9 4.5 1.9 6.8 2.8-3.4-30.4-5.4-60.9-5.8-91.5 0-2.2-1.8-3.9-4-4-21.7-.7-43 5.2-61.2 17.1 2 1.1 4 2.3 6 3.4-3.7-33.6-5.2-67.5-4.3-101.3 0-5.1-7.9-5.1-8 0z"/><path d="M556.2 502.3c5.7 81.8 5 164 3.2 245.9-.1 5.1 7.8 5.1 7.9 0 1.8-81.9 2.5-164.1-3.2-245.9-.4-5.1-8.3-5.1-7.9 0z"/><path d="M469.1 341.8c4.1 24.7 6.3 49.8 6.5 74.9 10.5-8.5 23.6-13.9 37.1-15.2-9.3 2.5-19.3-3.1-24.9-11-5.6-7.9-7.8-17.6-9.9-27-1.6-7.2-3.2-14.4-4.7-21.7m1.3 259.7c5.7-9.9 16.8-15.3 26.9-13 2.5 17.4 4.9 34.8 7.4 52.2 2.1-23.7 4.2-47.3 6.3-71-10.4 3.8-20.9 7.5-31.3 11.3-3-18.3-21.8-121.4-28.3-91.5-5.9 27.2 35.7 82.7 19 112zm70.8-113.1c.8-7 10.1-10.5 16.6-7.7 6.5 2.9 10.1 9.9 11.7 16.8 1.6 6.9 1.6 14.1 3.3 21 .8-21.8-1.5-43.6-6.8-64.7-7.2 2.6-14.3 5.2-21.5 7.8-3-15.1-4.2-39.1-13-49.8-5.5 26.7 9.7 50.9 9.7 76.6z" opacity=".7" fill="#9bdce0"/></svg>
+ data/MonsterTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st4{fill:#860e9c}</style><g opacity=".7"><path d="M835.1 537.5c1.4-.9 2.8-1.7 4.2-2.6-2.9-4-6.9-6.8-11.4-8.6-2.7-3-5.7-5.8-8.7-8.4-29.8-26.5-59.5-52.9-89.3-79.3-6-5.3-12.8-10.9-20.5-11.2-.8-3.8-1.7-7.7-2.5-11.5-3.2-14.6-6.8-29.9-15.5-41.7-.1-10.3-4.4-69-20.1-61.2-10.5 5.2-7.1 27.2-1.9 44.4-10.5-4.2-22.3-5.4-33.5-4.2-18.4 1.9-35.8 9.4-52.8 16.8-7.4-16-8.7-34.9-3.6-51.8-6.3 5.1-14.8-6.5-10.7-13.5 4.2-7 13.4-8.4 21.5-8.8 8-.4 17.2-.9 22.4-7.1-8.7-10.5-17.6-21.1-27.7-30.2 1.5-10.7-1.4-23-11.2-26.2-3.1 3.8-6.1 7.5-9.2 11.3-1.8-1-3.6-2-5.5-2.8-9.9-4.6-21.6-7.9-26.9-17.5-2.7-4.8-3.2-10.6-6.2-15.3-2.9-4.7-10-7.5-13.6-3.4 2.8-12.8 5.5-25.5 8.2-38.3-54.6 35.8-73 103.6-133.7 132.4-50.8 24.2-47.4 96-56.8 145.4-.7 3.9-1.5 7.8-2.1 11.6-18.8 10-39.3 25.2-56.7 37.4-20 14-37.3 32.4-60 41.1 6.9 8.5 15.3 15.7 24.6 21.2-8.9 6.1-18.3 12.8-22.1 23.1-3.8 10.2 1.6 24.5 12.3 25.3 2.8.2 5.7-.5 8.3.6 5.4 2.2-1.7 13-2.1 18.8-2.3 28.8 9.5 55 20.3 81.8 6.4 15.9 17.2 32.4 33.9 35.1 13.7 2.2 26.8-5.8 38.5-13.4 10.9 47 23.9 93.4 38.7 139.3-6.7 11.8-17.7 21-30.4 25.5 30.5 2.5 61 5 91.5 7.4 17 1.4 35 2.6 50.3-4.9s26.4-27.2 18.6-42.6c5.2 3.8 13.1.4 16.2-5.3 3.1-5.7 2.5-12.7 1.2-19.1-3-14-9.3-26.3-17.3-37.6 29.5 2.8 59.2-.8 88.1-8.3-1.2 14.8-2.5 29.6-3.7 44.4 10.6-1.4 16.2 13.2 14.1 23.9-2.1 10.7-14.5 32.8-11.6 43.3 4.8 17.6 34.7 8.2 52.5 6.8 25.9-2.1 51.7-4.2 77.6-6.3 6.1-.5 13-1.4 16.6-6.4 3.6-4.8 2.6-11.6 1.9-17.6-1-8.3-1.2-16.5-.8-24.8.7-1 1.4-1.9 2-2.9 12.1-18.9 14.5-42.4 14.3-64.9 0-6-.2-12.1-.4-18.1 3.5-12.8 8-25.2 14.9-35.9 10.2-3.1 20.1-6.9 28.3-13.8 7.5-6.2 17.4-16.7 18.2-26.3.7-1-3-.9-2.4-2 13.1-21.5-.3-54.3 17.1-72.3 5.1-14.9 5.9-31.3 2.2-46.7 9.5.6 15.9-11.3 13.7-20.7-.6-1.4-.9-2.4-1.3-3.4zm-265-294.2l.4 3.7c-1.4-1-2.9-1.8-4.4-2.7 1.3-.3 2.7-.6 4-1z" fill="#d646f0"/><path d="M461.7 401.2c6.2-16-2.5-35.3-17.1-44.4-14.6-9.1-33.5-9.1-49.8-3.7-14 4.7-26.8 13.4-35.1 25.5-12.1 17.6-13.3 42.1-3 60.8s31.5 30.9 52.9 30.2c21.4-.7 41.8-14.1 50.9-33.5 12-25.5 4.1-55.5-4.5-82.4m136.6 42.6c12.4-20 39.2-30.1 61.5-22.7 22.4 7.4 37.9 32 34.3 55.3-3.6 23.3-26.3 42.2-49.9 41-22.5-1.2-42-19.5-47.9-41.2-5.9-21.7.5-45.6 13.7-63.9M457.9 528.9c-1.4 15.7.5 31.6 5.3 46.5 6.5-6.8 11.6-15 14.9-23.8 1.3-3.6 2.4-7.5 1.4-11.2-1.2-4.6-5.6-7.9-10.2-9.2-4.6-1.3-9.5-1.1-14.3-.8m102.3-23.8c-.2-10-.3-19.9-.4-29.9 11.3 5.4 21.2 13.7 28.5 24-7.4 3.7-14.7 7.3-22.1 11" fill="#fff4d6"/><path d="M429.5 654.3c-8.8 3.4-18.5-6.6-17.4-16s9.9-16.3 19-18.9 18.8-1.8 28.2-1.8c25.8-.1 51.3-6.3 75.2-16 11.2-4.5 25-9.6 34.4-2 5.1 4.1 7.2 10.7 9.9 16.7 14.1 32.3 49.2 55 53.5 90 3.8 31.5-20.5 60.9-49.6 73.4-35.5 15.3-110.4 23.2-145.8 2.7-44.8-26.1-30.4-93.2-7.4-128.1z" fill="#f2abff"/><path class="st4" d="M451.3 347.8c-6.7-9.7-13.5-19.4-20.2-29.1 9.9-4 18.4-11.4 23.8-20.6-22.7-3.9-45.8 2.9-67.9 9.7-12.9 4-26.3 8.1-36.5 17-6 5.1-17.8 19.8-11.3 27.9 5.4 6.7 22 .7 28.3-.4 11.6-2.1 76.5-15.1 83.8-4.5zm185.8 3.7c7.7-.5 15.6-1.4 22.5-4.9 6.9-3.5 12.6-10.2 13-17.9.4-8.7-6.2-16.4-14-20.2-13.9-6.7-51-11.5-65.7-7.1-15 4.5-14.2 17.8-19.8 31.3 10.7 3 15.9 14.1 11.7 24.3 17.2-4.2 34.6-4.4 52.3-5.5z"/><path d="M385.3 88.8c-6.5 28.8-2.4 60.1 12.5 85.5 8.8 15.1 21.3 28.3 26.7 44.9 17.2 53.2-67.9 109.6-83 48.4-15-60.6 3.3-132.2 43.8-178.8zM612.1 280c-15.5-8.9-16.8-30.4-16.1-48.3 1.7-42.9 3.3-85.8 5-128.8.2-4.1.9-8.9 4.6-10.5 4.7-2 9.2 3.2 11.7 7.6 28.6 49.4 57.8 101.2 61.3 158.1.7 11.4-.5 24.7-9.8 31.4-9.5 6.9-22.7 3.6-33.6-.5-16.7-6.3-32.9-14.1-48.3-23.1" fill="#38b6ff"/><path d="M338.9 174.5c16.5-10.4 33.7-20 51.2-28.6 6.2 8.5 9.8 18.9 10 29.5-25 11.1-48.4 25.8-69.1 43.6m79.2-11.6c-18.6 12.3-34.8 28.2-47.4 46.7-2.5 3.6-4.9 7.9-3.6 12.1 1.3 4.4 6.3 6.7 10.9 6.4 4.5-.3 8.6-2.7 12.5-5.1 20.7-13.2 38.7-30.8 52.5-51.1m231.5-35.7c1.7 21.6 3.5 43.1 5.2 64.7-15.8-6.6-35.2 4.4-50.7-2.8-12.7-5.9-32.8-45.1-18.6-54.8 4.5-3.2 65.5 10.2 64.1-7.1zm-70.3-49.4c10.1 1.9 20.1 3.7 30.2 5.6 1.3-6.9 2.5-14.1.6-20.8s-7.9-12.9-14.9-12.5c-7.2.4-12.5 7.6-13.3 14.8-.8 7.2 1.7 14.3 4.2 21" fill="#ff2ba7"/><path class="st4" d="M254.1 731.2c-7.5 13.7-5.4 32 5 43.7 11.9-1.8 17.6-17.3 13-28.5s-15.9-18-27.1-22.2m44.8 29.2c-3.4 4.1-.9 11.2 4.2 12.8 5.1 1.5 10.9-2.4 11.9-7.6s-2.3-10.7-7.1-12.9c-4.9-2.2-10.8-1.2-15.1 1.9m40.1 151.1c2.2-8.8 10.9-15.5 20-15.4s17.6 7 19.6 15.9c-15.9 4.6-33.2 4.3-48.9-.9m48.1 1.9c10.1-6.5 20.6-13.2 32.5-14.6 11.9-1.4 25.6 4 29.5 15.4-20.8.7-41.5 1.3-62.3 2m71.2-6.1c7.3-2.4 13.2-7.7 19.5-12.2 6.2-4.5 13.6-8.5 21.2-7.6 7.6.8 14.8 8.5 12.4 15.9-2.5 7.6-12.3 9.4-20.3 9.3-12-.2-24.1-1.7-35.8-4.6m167.9 5.6c7-15.4 22.7-26.5 39.6-27.7 5.2-.4 10.8.2 15.1 3.2s6.7 9.1 4.3 13.8c-2.2 4.2-7.2 6-11.9 6.7-12 1.9-24.6-.7-34.9-7.2m85.7 1.9c-5.7-6.1-2.5-17.8 5.6-20.1 8-2.2 16.9 6.2 15.1 14.4s-13.4 12-19.8 6.6m24.3-9.2c.6-7.1 10.6-11.3 16.1-6.8s3.3 15.1-3.5 17.1m33.4-165.2c-1 6.6-1.9 13.8 1.2 19.7 3.2 5.9 12.2 8.9 16.6 3.8 3.3-3.8 2.3-9.4 1.1-14.3-1.4-5.6-2.9-11.5-7-15.6s-11.7-5.2-15.4-.8m44.9-26.8c-3.6 3-6.5 7.5-6.2 12.2.3 4.7 5.1 9.1 9.6 7.8 4.2-1.2 6-6.6 5-10.8-1.1-4.3-4.2-7.6-7.3-10.8m-316-16.9c.4-9.2 11.1-16.1 19.8-13.2s13.1 14.3 9.2 22.6c-3.9 8.3-14.9 12.2-23.4 8.8-8.5-3.4-13.7-13.2-12.4-22.3"/></g><path d="M464 418.1c4.9-12.6-4.6-28.4-17.9-30.5s-27.1 9.3-28 22.8 10.5 26.4 24 27.8c9.4 1 19.2-3.4 24.9-11 5.6-7.6 6.9-18.2 3.3-27m116 30.3c-7.6-8.4-2.9-23.5 7.4-28.1s23.2.5 29.9 9.5c6.7 9.1 8.1 21.2 6.4 32.4-1.1 7.2-4.1 15.1-10.8 18.1-5.5 2.5-12.1 1-17-2.6s-8-8.9-10.4-14.4c-6.2-14.2-8-30.3-5-45.5"/><path d="M439.1 398.5c6.2-5.6 18-1.9 19.8 6.3 1.8 8.2-7.4 16.6-15.4 14s-10.7-14.6-4.4-20.3m159.3 26.8c-1.8-4.7.9-10.7 5.7-12.3 3.9 2.4 6.4 7.3 5.3 11.7-1.2 4.4-6.5 7.5-10.7 5.7-4.2-1.9-5.1-8.8-1.1-11.1" fill="#fff"/><path d="M355.2 286.8c-.7 2.8-4.3 2.2-6.1.9-2.7-2-3.8-5.7-4.8-8.8-2.6-8.2-4.4-16.7-5.5-25.2-2.2-16.2-2.5-32.8-1.8-49.2 1.3-31.1 7.7-62.8 25.2-89.1 8.9-13.4 20.5-24.8 34.4-32.9-2-1.2-4-2.3-6-3.4-7 53.3 10.8 108.5 47.3 148 3.5 3.8 9.1-1.9 5.7-5.7-35.1-38.1-51.6-91.1-44.9-142.4.4-3.1-3.7-4.8-6-3.4-30 17.5-48.8 48.8-57.1 81.9-4.8 19-6.5 38.7-6.7 58.2-.2 19.8 1 39.8 6 59 2 7.6 4.4 17.7 12.4 21.1 6.2 2.6 14-.2 15.7-6.9 1.2-5-6.5-7.1-7.8-2.1z"/><path d="M439.1 252.6c3.4-10.7 8.6-20.8 15.5-29.7 3.3-4.3 7.1-8.3 11.1-11.9 1.4-1.3 14.5-12.6 15.2-5.8.4 4.1 6.9 5.9 7.9 1.1 3.7-19.6 18.9-35.3 38.3-39.7l-5.1-3.9c-2.1 16.2-7.4 31.7-15.4 45.8-1.5 2.8 1.1 7.3 4.5 5.9 8.7-3.6 17.8-4.8 27.2-3.2-.3-2.4-.6-4.9-1-7.3-7.6 4.3-7.8 13.5-4.6 20.8 4 9.1 15.1 13.6 17.5 23.4 1.2 5 9 2.9 7.7-2.1-1.9-7.7-7.7-12.6-13.1-18-3.6-3.6-10.2-13.4-3.5-17.2 2.8-1.6 2.5-6.7-1-7.3-10.7-1.9-21.3-.9-31.4 3.2 1.5 2 3 3.9 4.5 5.9 8.8-15.5 14.2-32.2 16.5-49.9.4-2.7-2.8-4.4-5.1-3.9-22 4.9-39.7 23.1-43.9 45.3 2.6.4 5.2.7 7.9 1.1-.7-6.9-6.9-11.1-13.7-9.6-7.2 1.6-13.6 8.1-18.6 13.1-11.7 11.7-20.2 26.1-25.2 41.8-1.4 4.9 6.3 7 7.8 2.1z"/><path d="M556.6 236.7h16.7c5.2 0 5.2-8 0-8h-16.7c-5.2 0-5.2 8 0 8zm39 7.6c2.1-27.3 4.9-54.7 5.9-82.1.5-13.1.2-26.3-1.6-39.4-1.3-9.2-5.6-20.8-2.1-29.9 5.3-13.8 19.7.7 24.1 7.3 6.8 10.4 12.8 21.6 18.4 32.7 11.6 22.7 21.2 46.4 28.9 70.7 4.2 13.2 7.7 26.6 10.7 40.1 3.2 14.9 6 30.2 3.2 45.4-1 5 6.8 7.2 7.7 2.1 2.7-14.2 1.1-28.4-1.7-42.5-2.7-13.6-6.1-27.1-10-40.3-8-26.8-18.4-52.9-31-77.9-6.3-12.5-12.8-25.6-21-36.9-5.9-8.1-15.4-17-26.3-13.6-9.9 3.1-12.4 13.7-11.9 22.9.3 4.9 1.2 9.7 2.1 14.5 1.5 7.8 2.2 15.7 2.6 23.7.7 16.7-.5 33.4-1.8 50-1.4 17.7-2.7 35.5-4.1 53.2-.5 5.1 7.5 5.1 7.9 0zm-241.2 80.1c28.5-9.3 56.9-18.8 85.4-28 5.3-1.7 15-5.2 18.7 1.3 2.5 4.4-2.1 6.3-5.5 7.3-7.5 2.1-15.9 2.5-20.4 9.8-1.2 2-.2 4.2 1.4 5.5 10.4 7.9 15.6 21.6 13.3 34.4 1.3-1 2.6-2 3.9-2.9-21.3-1.4-42.6-1.5-63.9-.2-16.5 1-33.4 2.9-46.5 13.8 2.2.6 4.5 1.2 6.7 1.8-2.6-11.8-2.1-23.7 1.2-35.3 1.4-5-6.3-7.1-7.7-2.1-3.7 13-4.1 26.4-1.2 39.5.7 3.2 4.5 3.5 6.7 1.8 12.8-10.6 31-11 46.8-11.8 19.3-1 38.7-.8 58 .5 1.6.1 3.6-1.3 3.9-2.9 3-16.7-3.5-33.2-17-43.5.5 1.8 1 3.6 1.4 5.5 2.5-4 8.4-4.4 12.5-5.4 4-.9 8.5-2 11.5-5 9.2-8.8-.4-21.5-10.9-22.4-7.7-.7-15.4 2.8-22.6 5.1-8.9 2.9-17.7 5.8-26.5 8.7-17.1 5.6-34.1 11.2-51.2 16.8-5 1.6-2.9 9.3 2 7.7zm320 27.8c-.4-7.5-1.2-15-2.2-22.5-1-6.7-1.7-14.2-4.4-20.4-5.3-12.2-20.7-12.2-32.1-13.6-15.5-1.9-31.1-2.9-46.7-3-11.6-.1-26.6-1.8-35.5 7.2-2.3 2.3-1 5.6 1.8 6.7 11 4.5 22 8.9 33 13.4-.3-2.4-.6-4.9-1-7.3-5.3 3.9-9.8 8.5-13.4 14.1-2.5 3.8-7.8 11.9-4.8 16.2 2.5 3.7 7.4 3.8 11.4 3.8.9 0 2.2-.3 3 0 1.6.6 1.2-.9.2 1.3-1.8 3.9-4.3 7.5-6.4 11.2-1.8 3.2 1.2 6.6 4.5 5.9 31.8-6.7 64-10.5 96.5-11.3 5.1-.1 5.2-8.1 0-8-33.2.8-66.2 4.7-98.6 11.6 1.5 2 3 3.9 4.5 5.9 3.1-5.4 12.1-15.9 6.2-22-1.8-1.9-4.4-2.4-6.9-2.5-1.7-.1-6.9.9-8-.5.1 1 .3 2 .4 3.1 2.8-8.7 8-16.3 15.4-21.7 2.9-2.2 2.3-6-1-7.3-11-4.5-22-8.9-33-13.4.6 2.2 1.2 4.5 1.8 6.7 3.9-4 9.4-4.6 14.7-4.8 6-.2 12-.2 18.1-.1 12.7.2 25.4 1 38 2.3 6.2.6 12.4 1.3 18.6 2.4 5.5 1 10.6 2.6 12.5 8.4 4 12 4.8 25.8 5.5 38.4.2 4.9 8.2 5 7.9-.2z"/><path d="M598.4 251.1c-1.8-5.5-9-6.3-11.9-1.2-2.9 5.1-.4 12.9 1.9 17.8 6.4 13.7 20 21.2 33.5 26.4 14.8 5.7 31.5 12.4 47.7 10.2 12.9-1.8 25.2-10 28.7-23 1.3-5-6.4-7.1-7.7-2.1-2.4 9.2-10.7 14.8-19.6 16.8-11.3 2.6-23.2-1.2-33.9-4.9-10-3.4-20.5-6.8-29.2-12.9-4-2.8-7.7-6.4-10.3-10.5-1.4-2.2-2.6-4.6-3.3-7.2-.3-1-.5-1.9-.7-2.9-.2-.9-.2-1.8-.2-2.7.3-1.4-.6-1.9-2.7-1.7 1.5 4.9 9.3 2.8 7.7-2.1zm-246.5 33.4c14.4 14.1 36.9 18.8 55.6 10.6 18.6-8.1 30.5-27.9 29.9-48-.2-5.1-8.2-5.2-8 0 .5 17-9.2 33.7-25 40.7-15.6 6.9-34.8 2.9-46.9-9-3.7-3.6-9.3 2.1-5.6 5.7zm-23.6 97.6c-4.8 35.1-10.6 76.1-41.8 98.2-2.5 1.8-2.6 5.2 0 6.9 10.2 6.7 21.5 10.7 33.6 12.2-1.1-2-2.3-4-3.5-6-3.9 6.3-7.9 12.6-11.8 19-2.8 4.6-4.5 9.8-.1 14 2.5 2.4 4.3 2.9 4 6.9-.2 3.4-1 6.9-1.5 10.3-1.1 7.5-2.3 14.9-3.4 22.4-.8 5 6.9 7.2 7.7 2.1 1-6.8 2.1-13.7 3.1-20.5.9-5.8 3.1-12.8 2-18.6-.4-2.3-1.5-4.3-3.2-6-.8-.7-2.6-1.4-3-2.2-.7-1.5.6-3.1 1.3-4.3 3.9-6.4 7.8-12.7 11.8-19 1.8-2.9-.6-5.7-3.5-6-10.6-1.4-20.6-5.2-29.5-11.1v6.9c33.2-23.7 40.4-65.3 45.5-103 .7-5.1-7-7.3-7.7-2.2z"/><path d="M671.3 308.4c5.2 8.6 8.5 18.5 11.6 28 4 12 7.5 24.1 11 36.2 2.8 9.9 5.5 19.8 8.7 29.5 1.8 5.5 3.8 11 9.5 13.6 3.4 1.5 7.1 1.9 10.4 3.6 3.8 2 6.9 4.9 9.3 8.5.5-1.8 1-3.6 1.4-5.5-7.5 5.4-15.6 9.8-24.3 13.1-2.2.8-4 3.6-2.4 5.9 5.7 8 11.8 15.7 18.3 23 .6-2.2 1.2-4.5 1.8-6.7-7.8 3.1-8.9 11.1-7.6 18.6 2.1 12.1 6.7 24.1 10.1 35.9 1.4 4.9 9.1 2.8 7.7-2.1-2.5-8.9-5.1-17.8-7.6-26.7-1-3.5-5.8-15.9-.4-18 2.8-1.1 3.9-4.3 1.8-6.7-6.1-6.8-11.7-14-17-21.4-.8 2-1.6 3.9-2.4 5.9 9.3-3.5 18.1-8 26.2-13.9 1.7-1.2 2.7-3.5 1.4-5.5-3.9-5.9-9.2-10.5-15.8-13-3.7-1.4-8-1.4-10.4-4.9-1.4-2-2-5-2.8-7.4-3.2-10.1-6-20.3-8.9-30.5-3.5-12.1-7-24.2-11.1-36.1-3.2-9.3-6.5-19-11.6-27.5-2.7-4.3-9.6-.3-6.9 4.1zM301 653l-7.8 65.1c-.8 6.4-3.5 17 4.9 19.6 3.9 1.2 8.7-.2 12.5-1.3 4.7-1.3 9.1-3.3 13.4-5.7-2-1.5-3.9-3-5.9-4.5-4.4 23.2 3.3 47 8.2 69.5 5.4 24.4 10.8 48.7 16.2 73.1 2.6-.7 5.1-1.4 7.7-2.1-.8-2.3-1.6-4.6-2.4-6.8-1.7-4.8-9.4-2.8-7.7 2.1.8 2.3 1.6 4.6 2.4 6.8 1.7 4.8 8.8 2.9 7.7-2.1-5.1-23.1-10.2-46.2-15.3-69.2-2.5-11.1-5-22.2-7.3-33.3-2.4-11.8-4.1-23.9-1.8-35.9.6-3.4-2.7-6.3-5.9-4.5-3.7 2-7.4 3.7-11.5 4.9-3.1.9-8.6 3.1-8.2-2 .6-8.1 1.9-16.2 2.9-24.3 2-16.4 3.9-32.9 5.9-49.3.6-5.2-7.4-5.1-8-.1z"/><path d="M361.9 859.7c-19.4 16-41.3 28.8-64.6 38.1-4 1.6-3.8 7.9 1.1 7.9 42.6 0 85.3-.1 127.9-.1h32c9.3 0 19.6 1.3 28.7-.5 8-1.6 11.1-7.7 11.5-15.3.6-10.1.5-20.4.8-30.5-2.6.3-5.2.7-7.9 1.1.9 6.3 7.1 9.7 13 9.5 7.4-.2 12.8-5.6 14.5-12.6 4.9-19.6-12.7-39.2-4.2-58.6 2-4.7-4.9-8.8-6.9-4-6.2 14.3-1.7 28.7 1.9 43.1 1.5 6.3 3.7 14.2.5 20.3-2.1 3.9-10.2 6.2-11.1.2-.7-4.6-7.8-3.3-7.9 1.1-.2 9.7-.4 19.3-.7 29-.2 4.4-.6 8.2-5.7 9.1-4 .7-8.5.2-12.6.2h-58c-38.6 0-77.3.1-115.9.1.4 2.6.7 5.2 1.1 7.9 24.7-9.8 47.6-23.2 68.2-40.2 4-3.4-1.7-9-5.7-5.8z"/><path d="M361.8 904.9c8.5-9.8 17-19.5 25.5-29.3 3.4-3.9-2.3-9.5-5.7-5.7-8.5 9.8-17 19.5-25.5 29.3-3.3 4 2.3 9.6 5.7 5.7zm66.8-6.6c7.8-2.6 14.1-7.3 19-13.9 3.1-4.1-3.9-8.1-6.9-4-3.6 4.8-8.6 8.3-14.2 10.2-4.8 1.6-2.7 9.3 2.1 7.7zm134.4-128c-2.1 17-4.2 34.1-6.3 51.2-.7 5.4-3.1 13 2.2 16.8 3 2.2 6.8 1.6 10.1.6 1.7-.5 3.4-1.2 5.1-1.8.9-.3 1.7-.6 2.6-.8 1.2-.2 1 .3.5-.4.8 1.2-2.2 7.7-2.6 9.2-1.1 4.3-2.1 8.6-3 13-3.1 15.9-4.4 32.2-3.9 48.4.1 2.1 1.8 4.1 4 4 37.6-2.3 75-6 112.3-11 3.2-.4 3.5-4.7 1.8-6.7-5.5-6.2-9.8-13.3-12.9-21-1.9-4.7-9.6-2.7-7.7 2.1 3.6 9.1 8.5 17.2 15 24.5.6-2.2 1.2-4.5 1.8-6.7-36.6 5-73.3 8.5-110.2 10.8l4 4c-.5-16.8.8-33.5 4.4-50 .8-3.7 1.7-7.4 2.7-11.1.9-3.3 2.6-7 2.2-10.5-.4-3.8-3.2-6.5-7.1-6.7-3.6-.2-6.9 1.5-10.3 2.6-.7.2-3.5 1.4-4.2.9-.7-.5 1-9.1 1.2-10.3 2.1-17 4.2-34.1 6.3-51.2.6-5-7.4-5-8 .1z"/><path d="M673.7 902.6c21 2.7 42.2.6 62.2-6.1 2.7-.9 4.1-4.6 1.8-6.7-9.9-8.9-17.8-19.5-23.6-31.5-2.2-4.6-9.2-.6-6.9 4 6.1 12.5 14.5 23.7 24.9 33.1.6-2.2 1.2-4.5 1.8-6.7-19.5 6.5-39.8 8.4-60.1 5.8-5.2-.5-5.2 7.5-.1 8.1z"/><path d="M728.5 898.3c7-.5 13.5-2.3 19.8-5.6 2.3-1.2 2.5-4.5.8-6.3-9.3-9.5-16.2-20.7-20.5-33.3-1.6-4.8-9.4-2.8-7.7 2.1 4.7 13.9 12.2 26.3 22.5 36.8.3-2.1.5-4.2.8-6.3-4.9 2.6-10.1 4.1-15.7 4.5-5.1.4-5.1 8.4 0 8.1z"/><path d="M730.2 865.6c21.3-44.8 31.2-94.5 28.4-144-2.3.9-4.5 1.9-6.8 2.8 6.3 5.6 15 6.7 22.3 2.3 1.4-.8 2.5-2.9 1.8-4.5-13.5-34.8-27.6-69.4-42.1-103.8l-5.5 5.5c9 5 18 9.9 27 14.8 2.5 1.3 6.3-.3 6-3.5-5.4-62-19.2-123.1-41.3-181.3-1.8-4.8-9.5-2.7-7.7 2.1 21.8 57.5 35.7 117.9 41 179.2 2-1.2 4-2.3 6-3.5-9-5-18-9.9-27-14.8-3.8-2.1-7 2-5.5 5.5 14.3 33.8 28.1 67.8 41.3 101.9l1.8-4.5c-4.1 2.4-9 2.2-12.6-1-2.4-2.2-7-.8-6.8 2.8 2.7 48.1-6.7 96.4-27.3 140-2.1 4.6 4.8 8.7 7 4zM702.3 435c5.2 0 5.2-8 0-8s-5.2 8 0 8zm-404.7 25.7c-29.4 10.9-54.5 30.8-71.6 57 1.1-.7 2.3-1.3 3.4-2-19.5-2.4-38.9 7.3-49.3 23.8-1.1 1.7-.5 4.5 1.4 5.5 12.9 6.2 26.4 10.1 40.6 11.7-1.1-2-2.3-4-3.4-6-7.6 14.6-24.7 26.4-21.9 44.8 1.9 12.6 17.7 21.5 28.1 12.2-2.2-1.3-4.5-2.6-6.7-3.9-12 30.9-.2 63.9 13.9 91.9 12.4 24.7 29.4 57.6 61.4 57.5 6.3 0 15.3-1.5 19.8-6.6 4.7-5.3-1.7-11.6-7.1-7.3-1 .8-1.4 2.7-1 3.9.1.2.1.4.2.6 1.6 4.9 9.3 2.8 7.7-2.1-.1-.2-.1-.4-.2-.6-.3 1.3-.7 2.6-1 3.9.2-.2.4-.3.5-.5-.9.4-1.9.8-2.8 1.2.3 0 .5-.1.8-.1-.9-.4-1.9-.8-2.8-1.2.2.2.4.3.6.5-.4-.9-.8-1.9-1.2-2.8.5-1 .1-1-1.1.1-1 .6-2 1-3.1 1.4-1.4.5-2.8.9-4.3 1.1-3.7.7-7.6.5-11.3-.2-7-1.4-13.4-4.6-18.8-9.2-11.7-9.9-19-24.1-26-37.4-14.7-27.8-28.4-60.9-16.4-92.1 1.6-4-4-6.3-6.7-3.9-3.5 3.1-8.9 1.2-11.8-1.9-4.1-4.2-3.4-10.8-1.5-15.9 4.1-11.2 14.1-19 19.6-29.5 1.5-2.9-.4-5.7-3.4-6-12.7-1.5-25-5.1-36.5-10.6.5 1.8 1 3.7 1.4 5.5 9-14.3 25.7-21.8 42.4-19.8 1.4.2 2.7-.9 3.4-2 16-24.4 39.5-43.2 66.8-53.3 4.8-1.8 2.7-9.5-2.1-7.7z"/><path d="M243.9 713.7c-2.2 9.3-3.1 19-2.3 28.5.8 8.9 2.5 19 7.1 26.8 3.6 6.1 10.4 10.1 16.8 5.3 6.6-5 10.5-14.7 13-22.3 1.6-4.9-6.1-7-7.7-2.1-1.9 5.9-4.7 12.4-9 17-5.2 5.6-8.9-8.5-9.7-11.8-3.5-12.9-3.5-26.4-.4-39.4 1.1-4.9-6.6-7-7.8-2z"/><path d="M275.2 748.1c5.1 12 14.4 26.7 29.9 21.6 5.8-1.9 9.4-7 9.7-13 .3-7.1-4.6-14.2-2.5-21.2 1.5-5-6.3-7.1-7.7-2.1-1.4 4.8-.6 9.5.6 14.2 1.1 4.3 3.5 10.6-1 13.8-4 2.8-9.8.8-13.1-2.2-4.3-4-6.6-9.8-8.9-15.2-2.1-4.7-9-.6-7 4.1zm445-315.8c15.3 9.5 30.7 19 44.8 30.2 13.7 11 24.5 23.8 35.5 37.2 4.8 5.8 9.9 11.4 16.2 15.6 7 4.8 14.6 6.2 22.6 8.4 8.1 2.2 18.5 10.5 8 17.3-8.4 5.4-17.3 10.1-26 15.1-2.2 1.3-2.7 4.5-.8 6.3 4.7 4.4 9.2 9.5 11.8 15.5 1.1 2.5 2 5.5 1.5 8.3-.6 3.6-3.2 5.3-5.7 7.5-4.4 3.9-5.3 8.6-4.2 14.2.5 2.5 1.8 5.2 1.6 7.8-.3 3.6-4.5 4.4-6.9 6.4-4.5 3.8-5 9.6-4.7 15.1.4 7.3.8 14.6.4 21.9-.8 14.5-4.3 29.9-13.8 41.2-9.5 11.5-24.6 19.1-39.6 15.5-5-1.2-7.1 6.5-2.1 7.7 14 3.4 28.2-.9 39.3-9.8 12.1-9.6 19.2-23.6 22.2-38.6 1.6-8.1 2.2-16.4 2.2-24.6 0-4-.2-7.9-.5-11.8-.3-4.4-1-8.9 3.2-11.5 5.5-3.5 9-6.9 8.1-13.8-.4-3.2-2-6.4-1.9-9.7.1-3.8 4.3-5.5 6.5-8.1 10.9-12.6-2.2-30-11.7-38.9-.3 2.1-.5 4.2-.8 6.3 7.7-4.5 15.4-8.9 23-13.4 5.3-3.1 10.9-6.5 11.5-13.3 1.6-15.9-16.4-19.5-27.7-22.7-14.1-4-23-15.9-31.7-26.9-9.6-12.1-20.3-22.8-32.5-32.2-13.9-10.8-28.8-20.1-43.7-29.4-4.4-2.5-8.4 4.4-4.1 7.2z"/><path d="M804.6 688.1c6.7 10.9 12 22.4 15.9 34.6l3.9-5.1c-9.3.3-18.1-3.7-23.5-11.3-3-4.2-9.9-.2-6.9 4 7.1 9.9 18.2 15.7 30.4 15.3 2.5-.1 4.7-2.5 3.9-5.1-4-12.8-9.6-25.1-16.7-36.5-2.8-4.3-9.7-.3-7 4.1zM781.1 719c4.1 15.1 4.2 30.6.3 45.7 2-.8 3.9-1.6 5.9-2.4-11.3-7.3-19.2-19.3-21-32.8-.7-5-8.7-5.1-8 0 2.2 16.4 11 30.7 25 39.7 2.2 1.4 5.2 0 5.9-2.4 4.3-16.5 4.2-33.5-.3-50-1.4-4.9-9.1-2.8-7.8 2.2zM429 519.2c53.3 34.3 116.9 6 167.4-18.9 4.6-2.3.6-9.2-4-6.9-47.9 23.6-108.7 51.5-159.4 18.9-4.3-2.8-8.4 4.1-4 6.9z"/><path d="M556.2 519.3c-1.9-16.2-1.1-32.5 2.6-48.4-2 .8-3.9 1.6-5.9 2.4 13.2 10 25 21.9 34.9 35.2 3 4.1 10 .1 6.9-4-10.8-14.5-23.3-27.2-37.7-38.1-2-1.5-5.3.1-5.9 2.4-3.8 16.6-4.8 33.6-2.8 50.6.5 4.9 8.5 5 7.9-.1zm-111.5 2.5c1.1 11 3 22 5.8 32.7 1.4 5.3 3 10.6 4.8 15.8 1.3 3.7 2.5 8.5 6 10.8 7.9 5.2 14.1-6.8 17.3-12.1 5.6-9.1 9.6-19.1 12.3-29.5 1.3-5-6.4-7.1-7.7-2.1-1.9 7.5-4.6 14.7-8.1 21.5-1.9 3.6-3.9 7-6.2 10.3-.4.6-2.6 4.3-3.2 4.4-1.2.2-1.7-2.8-2.1-3.8-5.6-15.5-9.3-31.7-11-48.1-.4-5-8.4-5.1-7.9.1zm190-159.5c-22.4-1.4-43.6 13.5-51.8 34-8.3 20.7-1.1 44.6 14.2 60 16.6 16.6 41.7 21 63.6 13.6 21.8-7.3 43-26.8 38.2-51.7-2.7-14.1-11.6-29.1-20.9-39.9-9.1-10.7-22.3-17.6-36.5-15.1-5.1.9-2.9 8.6 2.1 7.7 11.4-2 21.7 4.8 28.7 13.1 7.1 8.4 13.3 19.3 16.9 29.7 4 11.4 2.6 22.2-5.2 31.5-6.3 7.5-14.8 13.2-24.1 16.6-17.8 6.5-38.7 4.7-53.5-7.7-13.9-11.5-22.3-30.8-18-48.8 4.9-20.7 25-36.2 46.2-34.9 5.3.2 5.2-7.8.1-8.1zm-241.6-2.8c-24.5-9.9-45.3 19-49.9 39.6-5 22.7 2.3 47.6 23.5 59.3 21.6 11.9 52.3 14.2 75 4.3 26.1-11.3 35.1-39.2 33.8-65.9-.8-14.8-5.1-30.7-16.7-40.7-10.4-8.9-24.7-12.3-37.5-6.6-4.7 2.1-.6 9 4 6.9 9.7-4.4 21.3-.7 28.8 6.2 8.7 8 12.2 20.2 13.1 31.6 1.8 22.3-3.6 47.5-24.7 59-18.3 10-41.8 8.7-61.2 2.6-10.7-3.4-20.3-9.3-26-19.1-4.6-7.9-6.2-17.2-5.8-26.3.5-10.4 3.9-20.8 9.9-29.3 6.8-9.8 19.2-18.9 31.4-14 5 2.1 7.1-5.6 2.3-7.6z"/><path d="M464.4 405.5c3.5-11.1-4.1-21.8-14.4-25.9-11.1-4.5-22.8.7-30 9.7-13.9 17.4-13.1 52.2 14 55 10.9 1.1 22.5-3.9 27.3-14.1 2.2-4.6-4.7-8.7-6.9-4-3.6 7.7-12.2 11.3-20.4 10.1-11.8-1.7-16-13-14.9-23.9 1-10.6 7.2-22.7 18.1-25.9 9.8-2.9 22.9 6 19.5 16.9-1.6 4.9 6.1 7 7.7 2.1zm131 42.9c-6.6-10-11.8-23.2-7.2-35.1 3.8-9.7 15.8-17.7 26-12.5 9.9 5.1 15.5 17.6 16.9 28 1.6 11.3-1.1 22.6-7.6 32-3 4.2 4 8.2 6.9 4 8.2-11.8 10.8-26.5 8-40.5-2.6-13-11.3-28.7-25.1-32.5-12.7-3.5-26.2 5-31.6 16.5-6.9 14.5-1.5 31.4 6.8 44.1 2.8 4.3 9.7.3 6.9-4zM454.7 625.2c-15.9-8.7-35.9-8.5-51.5.8-5.8 3.4-16.1 10.8-9.6 18.2 3.3 3.7 8.9 6 13.1 8.6 5.4 3.3 10.8 6.5 16.1 9.8-.3-2.1-.5-4.2-.8-6.3-11.1 12.9-21.6 27.7-24.4 44.9-2.4 14.9 1 30.7 11.9 41.7 3.6 3.7 9.3-2 5.7-5.7-9.5-9.5-12.1-23.9-9.3-36.8 3.2-14.7 12.2-27.3 21.8-38.5 1.7-2 1.5-4.9-.8-6.3-7.5-4.6-15.1-9.1-22.6-13.7-.8-.5-4.6-2.3-4.6-2.9 0-.7 1.7-2 2.4-2.6 2.6-2.3 5.8-4.2 9-5.6 12.5-5.8 27.5-5.4 39.6 1.2 4.5 2.6 8.5-4.3 4-6.8zm63.4-6.7c12.9-7.5 26.8-13 41.5-16.1 3-.7 8.2-2.2 10.9.2 2.2 2 1.7 5.3.9 7.8-2.1 6.2-7.1 10.9-9 17.3-.6 2.2 1.2 5.4 3.9 5.1 14-1.8 27.8 3.4 37.3 13.8 4.8 5.3 7.2 11.3 9.4 18 2.5 7.3 6.5 10.6 13 14.4 11.8 6.8 14.7 21.9 9.9 34-5.7 14.5-20.9 22.8-34.9 27.2-4.9 1.5-2.8 9.2 2.1 7.7 23.6-7.3 47.4-26.3 42.3-53.8-1-5.4-3.2-10.5-6.6-14.8-1.7-2.1-3.6-3.9-5.8-5.4-2.9-2-6.5-3.2-9-5.6-4.5-4.3-5.1-12.6-8.1-18.1-2.8-5.1-6.7-9.8-11.2-13.6-10.7-8.9-24.6-13.7-38.5-11.8l3.9 5.1c2.3-8 9.3-13.5 9.9-22.2.5-7.5-4.2-13.4-11.8-14.1-8.8-.8-19 2.9-27.1 5.7-9.4 3.2-18.4 7.4-27 12.4-4.5 2.5-.5 9.5 4 6.8zm-23.6 57.6c4.1 0 8.1-.9 12.1-1.8 3.3-.8 9.5-2.8 11.7 1 2.3 3.8-1.7 8.5-5 10-4.9 2.2-10.6 1.4-15.8 1-5.1-.5-5.1 7.5 0 8 7.3.7 15.5 1.1 21.8-3.2 4.9-3.3 8.2-9.5 7.3-15.5-2.6-16.7-22.2-7.4-32.3-7.5-5-.1-5 7.9.2 8zm-31.3 116.7c58.5 4.5 117.6-8.5 168.8-37 4.5-2.5.5-9.4-4-6.9-50.1 27.8-107.7 40.3-164.8 35.8-5.1-.3-5.1 7.8 0 8.1z"/></svg>
+ data/MoonTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M330 633.9c5.5 12.5 12.3 24.8 22.3 34.3 10.2 9.6 23.3 15.7 36.1 21.6 42.8 19.7 93.1 39.3 135.1 18.1 15-7.6 34.8-19.3 45.8-6.7 41.6-18.7 73.7-54.9 92.1-96.2s23.6-87.4 20.9-132.4c-.5-7.7-4.8-18.1-12.3-16-16.8-45.2-49.4-91.5-97.9-97.2-7.2-.8-14.6-.8-21.3-3.5-7.3-3-12.9-9.1-19.6-13.2-18.2-11.2-45.1-5.1-56.6 12.7-14.2 21.9-71.8 17.2-93.3 26.3-25.8 11-45.4 49-55.3 73-23.3 56.7-20.8 123.3 4 179.2z" opacity=".7" fill="#f0efc7"/><path d="M381.5 372.9c-27.9 8.2-45.5 41.4-36.9 69.1 1.5 4.7 3.6 9.3 7 12.8 7.9 8.2 21.5 9 31.7 4 10.2-5.1 17.3-15 21.7-25.5 5.2-12.6 6.8-27.4 1.3-39.9-5.4-12.5-19-21.9-32.5-19.8m136 58.5c-22 19.2-31.6 60.5-14.2 85.6 11.6 16.8 32.6 22.4 49.8 15.2 17.2-7.1 30.3-25.5 35.8-46.3 1.5-5.5 2.4-11.4 1.8-17.1-.6-5.2-2.5-10.1-4.8-14.5-12.8-24.7-41-36.2-63.7-26M340.1 582.8c5.5-11.4 19.5-18 31.8-14.8 17.8 4.6 26.2 24.9 29.4 43 1.9 10.6 2.6 22.3-3.3 31.3-7.4 11.2-23.5 14.2-36.2 9.7-12.7-4.6-22.3-15.2-29.6-26.4-3.5-5.4-6.8-11.4-6.9-17.8s3.7-13.4 10-14.8m143.2 74.9c-.2-.1-.3-.2-.5-.3-8.4-4.5-15.4 7.8-7.5 13l.1.1c2.5 1.7 5.9 1.7 8.3 0 .6-.4 1.2-1 1.7-1.6 3-3.5 1.9-8.9-2.1-11.2zm140.9-89.5c10.1-10 26-18.7 37.6-10.6 12.6 8.8 8.3 28.2 2.7 42.5-7.3 18.3-26.4 54.3-52.7 40.9-29.5-15-3.1-57.4 12.4-72.8z" opacity=".7" fill="#c9c89b"/><path d="M345.6 381.8c-19.1 14.3-26.7 40.9-17.3 63 5.1 12 15 21.4 28.4 22.8 14.6 1.5 28.9-5.5 41.4-12.3 4.3-2.3.5-8.8-3.8-6.5-10.2 5.6-21.7 11.5-33.6 11.5-12.8 0-22.1-9-26.3-20.6-6.5-18-.4-39.9 15-51.4 3.9-2.9.1-9.4-3.8-6.5zm-33.3 58c-20 38.5-27.3 82.8-20 125.6 6.9 40.3 26.7 77.8 55.6 106.7 3.4 3.4 8.8-1.9 5.3-5.3-27.5-27.5-46.3-63-53.3-101.4-7.5-41.3-.5-84.6 18.9-121.8 2.2-4.3-4.3-8.1-6.5-3.8z"/><path d="M338.4 584.8c.6.3 4.2-3.6 5.6-4.5 2.4-1.6 5-3 7.8-3.9 5-1.8 10.3-2.5 15.6-2.3 11.8.5 22.7 6.3 29.9 15.7 6.7 8.8 10 20.2 9.3 31.2-.8 12.2-8.4 29.9-23.6 25.8-4.7-1.3-6.7 6-2 7.3 18.4 4.9 30.4-12.5 32.7-28.5 2.2-15.8-2.7-32.4-13.5-44.2-11-11.9-27.6-16.9-43.5-14.1-7.5 1.3-15 4.6-20.8 9.7-4.1 3.6-7.4 10.8-1.3 14.3 4.2 2.4 8-4.1 3.8-6.5zm45.3-21c4-7.9 9.1-14.9 15.4-21.2 3.4-3.4-1.9-8.8-5.3-5.3-6.7 6.7-12.2 14.3-16.5 22.7-2.3 4.3 4.2 8.1 6.4 3.8zm41.6 19.7c3.3-1.3 6.6-2.7 10-4 1.9-.8 3.2-2.5 2.6-4.6-.5-1.8-2.7-3.4-4.6-2.6-3.3 1.3-6.6 2.7-10 4-1.9.8-3.2 2.5-2.6 4.6.4 1.7 2.7 3.3 4.6 2.6zm12.9 45.9c4.9 0 4.9-7.5 0-7.5s-4.9 7.5 0 7.5zm11-215.9c-.4-2.7-.1-5.4.7-8 1.4-4.7-5.9-6.7-7.3-2-1.2 4-1.3 8-.7 12 .3 2 2.8 3.1 4.6 2.6 2.2-.5 3-2.5 2.7-4.6zm-67.6-42.3c22.7 5.5 35.1 29.7 25.2 51.2-2 4.4 4.5 8.2 6.5 3.8 11.8-25.7-2-55.6-29.7-62.3-4.7-1.1-6.7 6.2-2 7.3z"/><path d="M383.5 364.5c11.3-4.6 23.7-2.1 32.1 6.9 3.3 3.6 8.6-1.8 5.3-5.3-10-10.7-25.8-14.4-39.4-8.8-4.4 1.7-2.5 9 2 7.2z"/><path d="M402.1 363.7c25.5-13 53.3-20.8 81.9-23.1 4.8-.4 4.9-7.9 0-7.5-30 2.3-58.9 10.5-85.7 24.1-4.3 2.2-.5 8.7 3.8 6.5zM672 559.9c-30.9-4.4-61.9 9.8-77.2 37.4-12.7 22.9-14.8 58.6 10.5 74 4.2 2.5 8-4 3.8-6.5-22.3-13.6-18.3-46.1-6.9-65.4 13.8-23.4 40.9-36.1 67.7-32.2 4.9.7 6.9-6.6 2.1-7.3zm-98.4 73.8c-8.8-10.8-1.9-26.5 4.2-36.7 7-11.8 16.5-21.8 27.8-29.7 4-2.8.2-9.3-3.8-6.5-13.9 9.7-25.6 22.5-33.4 37.6-6.6 12.8-9.9 28.6-.1 40.7 3 3.7 8.3-1.7 5.3-5.4zM488.4 466c10.5-19.6 31.2-32.3 53.6-31.3 22.5 1 49 17.1 49.7 41.9.6 22.4-17.6 41.6-37.2 49.5-18.1 7.3-40.5 6.9-56.7-4.8-26.4-19-3.4-52.9 9.5-73.1 2.6-4.1-3.9-7.9-6.5-3.8-13.2 20.9-34.7 53.1-14.8 76.3 15.6 18.2 43.9 21.3 65.7 14.4 23.1-7.3 43.5-26.5 47.1-51.2 4-27.3-19.1-48.9-44-55-28.9-7-59 7.1-72.9 33.2-2.3 4.4 4.2 8.2 6.5 3.9z"/><path d="M568.7 428.1c15.5 5.9 27 19.1 31.2 35.1 1.2 4.7 8.5 2.7 7.3-2-4.9-18.7-18.5-33.5-36.5-40.4-4.6-1.7-6.5 5.6-2 7.3zm52.6-48c-11.2 19.9 1.6 43.6 24.1 45.6 4.8.5 4.8-7.1 0-7.5-16.9-1.6-25.9-19.7-17.6-34.3 2.4-4.2-4.1-8-6.5-3.8zM475.8 669c3.8-4.2 11.9-.5 12.2 4.9.4 7.3-9.3 10.1-14.8 8-4.5-1.8-6.5 5.5-2 7.3 10.9 4.2 26.2-4.3 24.2-17-1.7-10.8-17.1-17.1-24.9-8.5-3.2 3.5 2.1 8.9 5.3 5.3zm69.1 17.3c3.1 2.9 7.7 4.1 11.8 2.5 1.9-.7 3.2-2.5 2.6-4.6-.5-1.8-2.7-3.3-4.6-2.6-1.6.6-3.1.6-4.4-.6-3.6-3.3-9 2-5.4 5.3zm-182.2 2.9c20.1 24 47.8 35 78.2 39.4 33.2 4.8 66.8 3.8 99.7-2.7 4.8-.9 2.8-8.2-2-7.3-31.5 6.2-63.9 7.2-95.7 2.7-29.2-4.2-55.5-14.4-74.9-37.5-3.1-3.6-8.4 1.7-5.3 5.4z"/><path d="M545.3 726.2c3.6-14.2 20.2-19.7 31.3-9.8 3.6 3.2 9-2.1 5.3-5.3-15.2-13.5-38.8-6.8-43.9 13.2-1.2 4.6 6.1 6.6 7.3 1.9z"/><path d="M583.2 714.1c12-8.6 24-17.1 36-25.7 3.9-2.8.2-9.3-3.8-6.5-12 8.6-24 17.1-36 25.7-3.9 2.8-.1 9.4 3.8 6.5zm40.5-35c27.1-19.4 48-45.8 60.7-76.6 1.8-4.5-5.4-6.4-7.3-2-11.9 28.8-31.9 53.9-57.3 72-3.8 2.9-.1 9.4 3.9 6.6zM375.5 362.3c-23.2 7.8-42.8 25-52.6 47.6-10.7 24.7-8.8 53.5 4.3 76.9 2.4 4.2 8.9.4 6.5-3.8-12-21.6-13.8-48.4-3.5-71 9.1-20 26.6-35.5 47.4-42.5 4.5-1.5 2.5-8.7-2.1-7.2zM328.3 611c3.2 18.2 16.7 33 34.4 38.4 4.7 1.4 6.6-5.9 2-7.3-15.3-4.7-26.3-17.5-29.1-33.1-.9-4.7-8.2-2.7-7.3 2zm13.1-85.7c.5-2.7 2.1-4.9 4.8-5.7 4.6-1.4 2.6-8.7-2-7.3-5 1.5-9.1 5.8-10 11-.4 2 .5 4.1 2.6 4.6 1.8.6 4.3-.6 4.6-2.6zM645 467.1c-5.9 4.2-7.3 13.2-1.9 18.4 5.4 5.2 14.6 3.4 18.3-2.8 2.5-4.2-4-8-6.5-3.8-1.2 2-4.5 2.9-6.5 1.3-1.8-1.6-1.6-5.2.3-6.6 4-2.8.2-9.3-3.7-6.5zm-131.8-84.9c7 8.5 20.8 7 26.7-1.9 2.7-4.1-3.9-7.9-6.5-3.8-3.4 5.1-11.1 4.9-14.8.4-3.2-3.8-8.5 1.6-5.4 5.3zM396.3 694.7c12.5-11.8 32.1-3.2 32.2 13.9 0 4.8 7.6 4.9 7.5 0-.1-23.7-27.9-35.5-45.1-19.2-3.5 3.3 1.8 8.6 5.4 5.3zM305 541.6c-2-3.2 1.4-7.4 4.9-7.5 4.1-.2 6.9 4.4 7.8 7.7 2.2 7.8-2.8 15.6-6.6 22.1-2.5 4.2 4 8 6.5 3.8 6.7-11.4 14.2-30.2-.7-39.1-10.5-6.3-25.4 5.5-18.4 16.8 2.5 4.1 9 .4 6.5-3.8zM678.2 500c-9.2 5.3-9.2 19.8 0 25.1 4.2 2.4 8-4.1 3.8-6.5-4.3-2.5-4.4-9.6 0-12.1 4.2-2.4.4-9-3.8-6.5zm-45.7-122.1c-2.5 15.4 6.1 30.2 20.8 35.5 4.6 1.6 6.5-5.6 2-7.3-10.6-3.8-17.4-15-15.6-26.2.9-4.7-6.4-6.8-7.2-2zm-264.1 30.2c2.1 5.3 2.8 10.8 1.7 16.4-1 4.7 6.3 6.8 7.3 2 1.4-6.9.9-13.9-1.7-20.5-1.8-4.3-9.1-2.4-7.3 2.1z"/><path d="M498.5 335.5c43.2.7 88 11.7 124.9 34.6 20.5 12.7 38.5 29.6 50.9 50.4 15.5 25.8 21.9 56.9 22.5 86.7.8 37.3-8.2 74.5-25.7 107.6-2.3 4.3 4.2 8.1 6.5 3.8 30.3-57.4 37.9-132.4 8.6-191.9-22.3-45.4-67.6-73.6-114.8-87.5-23.6-7-48.4-10.8-73-11.2-4.8-.1-4.8 7.5.1 7.5z"/></svg>
+ data/NoteTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M492.2 565.6c-16.5-20.5-51.6-23.2-73.8-11.3-27.5 14.8-28.8 54-17.4 79.4 14 31 51.1 42.8 81.2 27.7 16.1-8 27.4-22.7 32.4-39.8 5.3-18.3 4.5-37.8 4.2-56.6l-1.2-74c-.3-21.4-.6-44.4 9.7-63.8 3.5-6.7-6.7-12.7-10.2-6-8 15.3-10.6 32.4-11.2 49.4-.7 18.6.2 37.2.5 55.8.3 18.9.9 37.8.8 56.7-.1 16-1 33.2-9 47.4-15.1 26.9-54 35-76.5 12.6-9.5-9.4-14.6-23-15.5-36.2-.9-12.3 1.4-27.1 10.2-36.5 16.4-17.4 52.8-14.8 67.4 3.4 4.8 6.1 13.2-2.3 8.4-8.2zm18.9-216.3c6.5 22.9 23.3 43.2 46.4 50.7 13 4.2 26.5 2.5 39.7.9 13.3-1.6 27.8-3.1 39 5.7 11.3 8.9 17.3 23.5 23 36.3 3.1 7 13.3.9 10.2-6-6.5-14.6-13.5-30.2-26.6-40.1-14.5-10.9-32.1-9.4-49-7.3-16.2 2-31.1 2.5-45.2-6.7-13-8.4-21.9-21.8-26.1-36.6-2.1-7.3-13.5-4.2-11.4 3.1z"/><path d="M527.6 430.1c7.6 0 7.6-11.9 0-11.9s-7.6 11.9 0 11.9z"/><path d="M507.5 431.6c19.4 15.9 46.5 6 67.1-1.5 23.7-8.6 50.1-10 73.4 1 6.9 3.2 12.9-7 6-10.2-21.8-10.3-47.5-12.3-70.7-6-12.4 3.4-24.1 9.3-36.7 11.9-9.3 2-22.7 2.9-30.6-3.6-6-4.8-14.4 3.5-8.5 8.4z"/><path d="M476.6 573.1c-9.9-6.8-21.3-11.5-32.8-10.5s-23 8.3-27.9 20.3c-5.6 13.8-1.4 30.5 6 43.2 6.7 11.6 16.2 21.4 27.7 25.9s25 3.2 34.7-5.1c9.8-8.4 14.7-22.3 17.2-36 11-58.7-2.9-114.9 7-178.6 8.2 5.9 18.7 5.6 28 2.6s17.8-8.4 26.7-12.6c22.2-10.2 47.2-12.1 70.3-5.2-8-14-25.1-15-39.6-16.3-28.2-2.6-58-13.8-74.5-40.1-16.6 16.5-20 44-22.2 69-2.9 32.1-5.5 64.4-2.8 96.5 1.2 14 3.5 28 2.2 42-.2 2-.6 4.3-2.3 5.1-1 .5-2.2.1-3.2-.2-13.5-4.3-26.9-8.5-40.3-12.8" opacity=".7" fill="#131314"/><path d="M501.6 557.7c-7.1-67.7-1.6-136.2 16.2-201.9 2-7.4-9.4-10.5-11.4-3.1-18.1 66.6-23.9 136.4-16.7 205 .9 7.5 12.7 7.6 11.9 0z"/></svg>
+ data/PawnBlackTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st1{opacity:.7}.st2{fill:#c7af7b}</style><path d="M552.4 398.3c-8-10.2-27.8-15.3-40.2-13-14.9 2.8-32.5 16.9-36 32.4s8.6 38.7 22.7 44.5c-4.9 1-10.2 2.2-13.6 6.1-3.4 3.9-3.1 11.4 1.6 13.3 2.4.9 5 .2 7.5.6 7.1 1.2 9.5 10.5 9.9 18 1.2 22.1-1.7 44.4-8.4 65.4-3.8 11.8-9.2 23.8-18.8 31.1-5.1 3.9-11.2 6.4-15.4 11.3s-5.2 13.9.2 17.4c-8.9-2.6-14.2 12.5-8.3 19.9s16.3 8.2 25.5 8.5c26.5.7 53.1 1.4 79.6 2.2 8.6.2 18.1.2 24.7-5.7 6.6-5.8 6.5-19.7-1.9-22-3.9 0-7.8.1-11.7.2 6.4-7 5.3-19.9-2.2-25.5-2.9-2.2-6.4-3.3-9.2-5.5-2.7-2.2-4.6-5.4-6.3-8.5-17.8-32.5-26.6-70.4-25.3-107.8-.2 5.5 13.6-1.4 14.9-4.7 2.2-5.6-3.9-7.5-3.6-11.1.3-5 3.9-3.7 5.7-8.9 5.9-17.5 23.6-39.1 8.6-58.2z" opacity=".7" fill="#473f2c"/><path d="M492.6 458.2c-14.7-1.4-24.8-15.7-24.6-29.8.3-16.2 11.4-29.6 25.2-36.8 13.5-6.9 30.4-9.5 45-4.8 14.9 4.8 24.1 18.6 24.1 34.1 0 8.6-2.9 16.8-7.7 23.9-2.3 3.4-5 6.5-8.1 9.3-1.6 1.5-3.2 2.8-5 4.1-.7.5-1.3 1-2 1.3-.4.2-.8.4-1.3.5-.8 0-.6.2.4.5-2.5-4.8-9.8-.5-7.2 4.2 5 9.4 16.9-.7 21.5-5.1 6.9-6.5 12.3-14.6 15.3-23.6 6-18 .8-39.2-14.7-50.7-15.7-11.7-38.2-11.2-55.9-4.7-18.6 6.8-34.6 21.5-37.6 41.8-3.1 20.9 10.6 42.1 32.4 44.1 5.6.6 5.6-7.8.2-8.3z"/><path d="M495.8 460.1c-6.7-2.4-14.4 0-18.9 5.5-4.1 4.9-6.8 13.9-4.1 20.1 1.5 3.5 5 4.4 8.5 5.1 4.2.9 8.4 1.5 12.7 1.9 8.6.7 17.2.1 25.7-1.4 5.3-1 3-9-2.2-8.1-11 2-22.4 1.9-33.4-.4-.9-.2-2.8-.2-3.5-.8-.6-.5-.4-2.4-.3-3.3.2-2.2.8-4.4 1.9-6.3 2.4-4 6.9-5.9 11.3-4.3 5.1 1.9 7.3-6.1 2.3-8z"/><path d="M488.1 467.3c9.5 3.5 19.5 4.2 29.5 2.5 5.3-.9 3-9-2.2-8.1-8.5 1.5-17 .5-25-2.5-5.2-1.8-7.3 6.3-2.3 8.1zm10.5 26.8c-2.5 39.4-8.4 83.1-40.3 110.3-4.1 3.5 1.8 9.4 5.9 5.9 33.7-28.6 40.1-74.7 42.8-116.2.3-5.3-8.1-5.3-8.4 0zm29.9-1c-.2 23.5 4 46.9 12.5 68.8 4.2 10.8 9.3 21.3 15.4 31.2 4.1 6.6 12.9 22.7 22.9 15.6 4.4-3.1.2-10.3-4.2-7.2-4 2.8-14.4-17.4-16-20.4-5-9-9.1-18.4-12.5-28.2-6.6-19.3-9.9-39.5-9.7-59.8.1-5.4-8.3-5.4-8.4 0z"/><path d="M468.1 604.3c-6-4.1-14.8-2.5-18.7 3.8-4.2 6.8-1.3 15 1.6 21.7 2.1 4.9 9.3.7 7.2-4.2-1.5-3.4-3.4-7.9-2.3-11.6 1.1-3.7 5.1-4.4 8-2.4 4.4 3 8.6-4.3 4.2-7.3z"/><path d="M452.4 626.8c-1.2.4-3.4-1.2-4.7-1.4-1.8-.3-3.5 0-5.1.8-3.1 1.7-4.8 5.2-5.5 8.5-1.9 9.2-.8 19.4.6 28.6.8 4.7 8.4 3.5 8.2-1.1 0-1-.1-2-.1-3-.2-5.4-8.6-5.4-8.4 0 0 1 .1 2 .1 3 2.7-.4 5.5-.7 8.2-1.1-1.2-7.3-1.5-14.8-.9-22.2.1-1.1.4-4.8 1.4-5.3.8-.3 3.1 1.2 4 1.4 1.5.3 2.9.3 4.3-.2 5.2-1.5 3-9.6-2.1-8z"/><path d="M440.5 662.3c51.4 7.4 103.6 8.6 155.3 3.4 5.3-.5 5.4-8.9 0-8.4-50.9 5.1-102.4 4.1-153.1-3.1-2.2-.3-4.5.6-5.1 2.9-.6 2 .7 4.9 2.9 5.2z"/><path d="M583.8 631.4c2.2-.8 5.4-2.2 7.8-1.4 2.8 1 2.2 5.5 2.2 7.9.1 7.7-.3 15.4-1.2 23.1h8.4c0-.9.1-1.8.1-2.7.2-5.4-8.2-5.4-8.4 0 0 .9-.1 1.8-.1 2.7-.2 5.5 7.8 5.2 8.4 0 .6-5.4 1-10.8 1.1-16.3.1-4.8.6-10.1-.6-14.8-2.4-9.5-12.4-9.2-19.9-6.6-5.1 1.8-2.9 9.9 2.2 8.1z"/><path d="M552.3 609.9c7.8-.9 15.5-1.1 23.3-.6 1.5.1 3.6-.1 5.1.5 1.3.5 1.3 1.2 1.2 2.7-.2 3.5-1.9 6.7-4.2 9.1-3.7 3.9 2.2 9.8 5.9 5.9 5.3-5.6 11.3-19.5 2.2-24.7-4.3-2.5-10.9-2.1-15.7-2.2-6-.1-11.9.2-17.8.8-5.3.7-5.4 9.1 0 8.5z"/><g class="st1"><path class="st2" d="M477.4 619.2c11.6.4 23.2.8 34.8 1.3 5.4.2 5.4-8.2 0-8.4-11.6-.4-23.2-.8-34.8-1.3-5.4-.1-5.3 8.2 0 8.4z"/></g><g class="st1"><path class="st2" d="M537.3 620.1c1.1-.4 2.2-.7 3.3-1.1 2.1-.7 3.6-2.9 2.9-5.2-.7-2.1-2.9-3.7-5.2-2.9-1.1.4-2.2.7-3.3 1.1-2.1.7-3.6 2.9-2.9 5.2.7 2 2.9 3.6 5.2 2.9z"/></g><g class="st1"><path class="st2" d="M521.2 516.3c-1.4 13.7.8 28.2 3.8 41.6 2.9 13 7.5 29 18.3 37.7 4.2 3.3 10.1-2.5 5.9-5.9-10-8-13.8-22.9-16.4-34.8-2.7-12.4-4.6-25.8-3.3-38.5.5-5.4-7.8-5.4-8.3-.1z"/></g><g class="st1"><path class="st2" d="M526.8 402.6c11.5 6.8 15.6 22.7 8.8 34.2-2.7 4.7 4.5 8.9 7.2 4.2 9-15.4 3.5-36.6-11.8-45.6-4.6-2.8-8.8 4.4-4.2 7.2z"/></g><path d="M530.7 471.5c4.6-.9 11.1-2.3 15.3.8 2.6 1.9 4.4 6.1 1 8.1-1.7 1-4 1.1-5.9 1.2-3 .2-5.9.4-8.9.7-6.1.6-12.1 1.5-18.1 2.5-5.3 1-3 9 2.2 8.1 8.5-1.5 17.1-2.2 25.7-3 6.2-.5 13.1-2.7 14.9-9.5 1.5-5.9-1.8-12.2-6.7-15.4-6.4-4.2-14.7-3-21.7-1.7-5.3 1.1-3.1 9.2 2.2 8.2z"/></svg>
+ data/PawnBlueTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M533.3 387.1c-8.2-10-28.6-15.1-41.3-12.8-15.3 2.8-35.3 21.5-39 36.7s10.8 33.3 25.2 39.1c-5.1 1-10.5 2.2-14 6-3.5 3.9-3.2 11.3 1.6 13.1 2.4.9 5.1.2 7.7.6 7.3 1.2 9.7 10.3 10.1 17.7 1.2 21.8-1.8 43.7-8.6 64.4-3.9 11.7-9.4 23.4-19.3 30.6-5.2 3.8-11.6 6.3-15.9 11.2s-5.3 13.7.2 17.1c-9.1-2.5-14.6 12.3-8.6 19.6 6.1 7.3 16.8 8.1 26.2 8.3l81.8 2.1c8.9.2 18.7.2 25.4-5.6s6.7-19.4-1.9-21.7c-4 0-8 .1-12 .2 6.6-6.9 5.4-19.6-2.3-25.1-3-2.1-6.6-3.2-9.5-5.5-2.8-2.2-4.7-5.3-6.5-8.4-18.3-32.1-27.4-69.3-26-106.2-.2 5.4 14-1.4 15.3-4.6 2.2-5.5-4-7.4-3.7-10.9.3-4.9 1.2-5 3.1-10.1 6.4-17 27.4-37 12-55.8z" opacity=".7" fill="#35a4ff"/><path d="M470.8 444.2c-14.7-1.4-24.8-15.7-24.6-29.8.3-16.2 11.4-29.6 25.2-36.8 13.5-6.9 30.4-9.5 45-4.8 14.9 4.8 24.1 18.6 24.1 34.1 0 8.6-2.9 16.8-7.7 23.9-2.3 3.4-5 6.5-8.1 9.3-1.6 1.5-3.2 2.8-5 4.1-.6.5-1.3 1-2 1.3-.4.2-.8.4-1.3.5-.8 0-.6.2.4.5-2.5-4.8-9.8-.5-7.2 4.2 5 9.4 16.9-.7 21.5-5.1 6.9-6.5 12.3-14.6 15.3-23.6 6-18 .8-39.2-14.7-50.7-15.7-11.7-38.2-11.2-55.9-4.7-18.6 6.8-34.6 21.5-37.6 41.8-3.1 20.9 10.6 42.1 32.4 44.1 5.5.6 5.5-7.8.2-8.3z"/><path d="M473.9 446.1c-6.7-2.4-14.4 0-18.9 5.5-4.1 4.9-6.8 13.9-4.1 20.1 1.5 3.5 5 4.4 8.5 5.1 4.2.9 8.4 1.5 12.7 1.9 8.6.7 17.2.1 25.7-1.4 5.3-1 3-9-2.2-8.1-11 2-22.4 1.9-33.4-.4-.9-.2-2.8-.2-3.5-.8-.6-.5-.4-2.4-.3-3.3.2-2.2.8-4.4 1.9-6.3 2.4-4 6.9-5.9 11.3-4.3 5.2 1.9 7.4-6.1 2.3-8z"/><path d="M466.2 453.3c9.5 3.5 19.5 4.2 29.5 2.5 5.3-.9 3-9-2.2-8.1-8.5 1.5-17 .5-25-2.5-5.1-1.8-7.3 6.3-2.3 8.1zm10.5 26.8c-2.5 39.4-8.4 83.1-40.3 110.3-4.1 3.5 1.8 9.4 5.9 5.9 33.7-28.6 40.1-74.7 42.8-116.2.3-5.3-8-5.3-8.4 0zm30-1c-.2 23.5 4 46.9 12.5 68.8 4.2 10.8 9.3 21.3 15.4 31.2 4.1 6.6 12.9 22.7 22.9 15.6 4.4-3.1.2-10.3-4.2-7.2-4 2.8-14.4-17.4-16-20.4-5-9-9.1-18.4-12.5-28.2-6.6-19.3-9.9-39.5-9.7-59.8 0-5.4-8.4-5.4-8.4 0z"/><path d="M446.3 590.3c-6-4.1-14.8-2.5-18.7 3.8-4.2 6.8-1.3 15 1.6 21.7 2.1 4.9 9.3.7 7.2-4.2-1.5-3.4-3.4-7.9-2.3-11.6 1.1-3.7 5.1-4.4 8-2.4 4.4 3 8.6-4.3 4.2-7.3z"/><path d="M430.5 612.8c-1.2.4-3.4-1.2-4.7-1.4-1.8-.3-3.5 0-5.1.8-3.1 1.7-4.8 5.2-5.5 8.5-1.9 9.2-.8 19.4.6 28.6.8 4.7 8.4 3.5 8.2-1.1 0-1-.1-2-.1-3-.2-5.4-8.6-5.4-8.4 0 0 1 .1 2 .1 3 2.7-.4 5.5-.7 8.2-1.1-1.2-7.3-1.5-14.8-.9-22.2.1-1.1.4-4.8 1.4-5.3.8-.3 3.1 1.2 4 1.4 1.5.3 2.9.3 4.3-.2 5.3-1.5 3.1-9.6-2.1-8z"/><path d="M418.7 648.3c51.4 7.4 103.6 8.6 155.3 3.4 5.3-.5 5.4-8.9 0-8.4-50.9 5.1-102.4 4.1-153.1-3.1-2.2-.3-4.5.6-5.1 2.9-.6 2 .7 4.9 2.9 5.2z"/><path d="M562 617.4c2.2-.8 5.4-2.2 7.8-1.4 2.8 1 2.2 5.5 2.2 7.9.1 7.7-.3 15.4-1.2 23.1h8.4c0-.9.1-1.8.1-2.7.2-5.4-8.2-5.4-8.4 0 0 .9-.1 1.8-.1 2.7-.2 5.5 7.8 5.2 8.4 0 .6-5.4 1-10.8 1.1-16.3.1-4.8.6-10.1-.6-14.8-2.4-9.5-12.4-9.2-19.9-6.6-5.1 1.8-2.9 9.9 2.2 8.1z"/><path d="M530.5 595.9c7.8-.9 15.5-1.1 23.3-.6 1.5.1 3.6-.1 5.1.5 1.3.5 1.3 1.2 1.2 2.7-.2 3.5-1.9 6.7-4.2 9.1-3.7 3.9 2.2 9.8 5.9 5.9 5.3-5.6 11.3-19.5 2.2-24.7-4.3-2.5-10.9-2.1-15.7-2.2-6-.1-11.9.2-17.8.8-5.3.7-5.4 9.1 0 8.5zm-74.9 9.3c11.6.4 23.2.8 34.8 1.3 5.4.2 5.4-8.2 0-8.4-11.6-.4-23.2-.8-34.8-1.3-5.4-.1-5.4 8.2 0 8.4zm59.8.9c1.1-.4 2.2-.7 3.3-1.1 2.1-.7 3.6-2.9 2.9-5.2-.7-2.1-2.9-3.7-5.2-2.9-1.1.4-2.2.7-3.3 1.1-2.1.7-3.6 2.9-2.9 5.2.7 2 3 3.6 5.2 2.9zm-18.7-103c-.4 13.9 2.7 28.4 6.7 41.7 4 13.2 9.7 28.4 21.5 36.6 4.4 3.1 8.6-4.2 4.2-7.2-4.6-3.2-7.8-8.4-10.4-13.3-3.3-6.4-5.8-13.2-7.8-20.1-3.5-12.1-6.3-25.1-5.9-37.7.2-5.3-8.1-5.3-8.3 0zm8.3-114.5c11.5 6.8 15.6 22.7 8.8 34.2-2.7 4.7 4.5 8.9 7.2 4.2 9-15.4 3.5-36.6-11.8-45.6-4.6-2.8-8.8 4.4-4.2 7.2zm3.9 68.9c4.6-.9 11.1-2.3 15.3.8 2.6 1.9 4.4 6.1 1 8.1-1.7 1-4 1.1-5.9 1.2-3 .2-5.9.4-8.9.7-6.1.6-12.1 1.5-18.1 2.5-5.3 1-3 9 2.2 8.1 8.5-1.5 17.1-2.2 25.7-3 6.2-.5 13.1-2.7 14.9-9.5 1.5-5.9-1.8-12.2-6.7-15.4-6.4-4.2-14.7-3-21.7-1.7-5.3 1.1-3.1 9.2 2.2 8.2z"/></svg>
+ data/PawnGreenTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M544.7 379.7c-8.1-10.4-28.4-15.5-41-13.2-15.2 2.9-33.1 17.2-36.8 32.9s8.8 39.3 23.1 45.3c-5 1-10.4 2.2-13.9 6.2s-3.2 11.6 1.6 13.5c2.4.9 5.1.2 7.6.6 7.2 1.2 9.6 10.7 10 18.3 1.2 22.5-1.8 45.2-8.6 66.5-3.9 12-9.4 24.2-19.2 31.6-5.2 4-11.5 6.5-15.7 11.5s-5.3 14.1.2 17.7c-9-2.6-14.5 12.7-8.5 20.2s16.6 8.3 26 8.6c27.1.7 54.1 1.5 81.2 2.2 8.8.2 18.5.2 25.2-5.8s6.6-20-1.9-22.4c-4 0-7.9.1-11.9.2 6.5-7.1 5.4-20.2-2.3-25.9-3-2.2-6.5-3.3-9.4-5.7-2.8-2.2-4.7-5.5-6.4-8.7-18.1-33.1-27.2-71.6-25.8-109.7-.2 5.6 13.9-1.4 15.2-4.8 2.2-5.7-3.9-7.6-3.7-11.3.3-5 1.2-5.1 3-10.4 6.4-17.3 27.2-38 12-57.4z" opacity=".7" fill="#81c90e"/><path d="M486.9 438.2c-14.7-1.4-24.8-15.7-24.6-29.8.3-16.2 11.4-29.6 25.2-36.8 13.5-6.9 30.4-9.5 45-4.8 14.9 4.8 24.1 18.6 24.1 34.1 0 8.6-2.9 16.8-7.7 23.9-2.3 3.4-5 6.5-8.1 9.3-1.6 1.5-3.2 2.8-5 4.1-.6.5-1.3 1-2 1.3-.4.2-.8.4-1.3.5-.8 0-.6.2.4.5-2.5-4.8-9.8-.5-7.2 4.2 5 9.4 16.9-.7 21.5-5.1 6.9-6.5 12.3-14.6 15.3-23.6 6-18 .8-39.2-14.7-50.7-15.7-11.7-38.2-11.2-55.9-4.7-18.6 6.8-34.6 21.5-37.6 41.8-3.1 20.9 10.6 42.1 32.4 44.1 5.5.6 5.5-7.8.2-8.3z"/><path d="M490 440.1c-6.7-2.4-14.4 0-18.9 5.5-4.1 4.9-6.8 13.9-4.1 20.1 1.5 3.5 5 4.4 8.5 5.1 4.2.9 8.4 1.5 12.7 1.9 8.6.7 17.2.1 25.7-1.4 5.3-1 3-9-2.2-8.1-11 2-22.4 1.9-33.4-.4-.9-.2-2.8-.2-3.5-.8-.6-.5-.4-2.4-.3-3.3.2-2.2.8-4.4 1.9-6.3 2.4-4 6.9-5.9 11.3-4.3 5.2 1.9 7.3-6.1 2.3-8z"/><path d="M482.3 447.3c9.5 3.5 19.5 4.2 29.5 2.5 5.3-.9 3-9-2.2-8.1-8.5 1.5-17 .5-25-2.5-5.1-1.8-7.3 6.3-2.3 8.1zm10.5 26.8c-2.5 39.4-8.4 83.1-40.3 110.3-4.1 3.5 1.8 9.4 5.9 5.9 33.7-28.6 40.1-74.7 42.8-116.2.3-5.3-8.1-5.3-8.4 0zm30-1c-.2 23.5 4 46.9 12.5 68.8 4.2 10.8 9.3 21.3 15.4 31.2 4.1 6.6 12.9 22.7 22.9 15.6 4.4-3.1.2-10.3-4.2-7.2-4 2.8-14.4-17.4-16-20.4-5-9-9.1-18.4-12.5-28.2-6.6-19.3-9.9-39.5-9.7-59.8 0-5.4-8.4-5.4-8.4 0z"/><path d="M462.3 584.3c-6-4.1-14.8-2.5-18.7 3.8-4.2 6.8-1.3 15 1.6 21.7 2.1 4.9 9.3.7 7.2-4.2-1.5-3.4-3.4-7.9-2.3-11.6 1.1-3.7 5.1-4.4 8-2.4 4.5 3 8.7-4.3 4.2-7.3z"/><path d="M446.6 606.8c-1.2.4-3.4-1.2-4.7-1.4-1.8-.3-3.5 0-5.1.8-3.1 1.7-4.8 5.2-5.5 8.5-1.9 9.2-.8 19.4.6 28.6.8 4.7 8.4 3.5 8.2-1.1 0-1-.1-2-.1-3-.2-5.4-8.6-5.4-8.4 0 0 1 .1 2 .1 3 2.7-.4 5.5-.7 8.2-1.1-1.2-7.3-1.5-14.8-.9-22.2.1-1.1.4-4.8 1.4-5.3.8-.3 3.1 1.2 4 1.4 1.5.3 2.9.3 4.3-.2 5.2-1.5 3.1-9.6-2.1-8z"/><path d="M434.8 642.3c51.4 7.4 103.6 8.6 155.3 3.4 5.3-.5 5.4-8.9 0-8.4-50.9 5.1-102.4 4.1-153.1-3.1-2.2-.3-4.5.6-5.1 2.9-.6 2 .6 4.9 2.9 5.2z"/><path d="M578 611.4c2.2-.8 5.4-2.2 7.8-1.4 2.8 1 2.2 5.5 2.2 7.9.1 7.7-.3 15.4-1.2 23.1h8.4c0-.9.1-1.8.1-2.7.2-5.4-8.2-5.4-8.4 0 0 .9-.1 1.8-.1 2.7-.2 5.5 7.8 5.2 8.4 0 .6-5.4 1-10.8 1.1-16.3.1-4.8.6-10.1-.6-14.8-2.4-9.5-12.4-9.2-19.9-6.6-5 1.8-2.9 9.9 2.2 8.1z"/><path d="M546.5 589.9c7.8-.9 15.5-1.1 23.3-.6 1.5.1 3.6-.1 5.1.5 1.3.5 1.3 1.2 1.2 2.7-.2 3.5-1.9 6.7-4.2 9.1-3.7 3.9 2.2 9.8 5.9 5.9 5.3-5.6 11.3-19.5 2.2-24.7-4.3-2.5-10.9-2.1-15.7-2.2-6-.1-11.9.2-17.8.8-5.3.7-5.3 9.1 0 8.5zm-74.8 9.3c11.6.4 23.2.8 34.8 1.3 5.4.2 5.4-8.2 0-8.4-11.6-.4-23.2-.8-34.8-1.3-5.4-.1-5.4 8.2 0 8.4zm59.8.9c1.1-.4 2.2-.7 3.3-1.1 2.1-.7 3.6-2.9 2.9-5.2-.7-2.1-2.9-3.7-5.2-2.9-1.1.4-2.2.7-3.3 1.1-2.1.7-3.6 2.9-2.9 5.2.7 2 3 3.6 5.2 2.9zm-18.7-103c-.4 13.9 2.7 28.4 6.7 41.7 4 13.2 9.7 28.4 21.5 36.6 4.4 3.1 8.6-4.2 4.2-7.2-4.6-3.2-7.8-8.4-10.4-13.3-3.3-6.4-5.8-13.2-7.8-20.1-3.5-12.1-6.3-25.1-5.9-37.7.2-5.3-8.2-5.3-8.3 0zm8.3-114.5c11.5 6.8 15.6 22.7 8.8 34.2-2.7 4.7 4.5 8.9 7.2 4.2 9-15.4 3.5-36.6-11.8-45.6-4.6-2.8-8.9 4.4-4.2 7.2zm3.9 68.9c4.6-.9 11.1-2.3 15.3.8 2.6 1.9 4.4 6.1 1 8.1-1.7 1-4 1.1-5.9 1.2-3 .2-5.9.4-8.9.7-6.1.6-12.1 1.5-18.1 2.5-5.3 1-3 9 2.2 8.1 8.5-1.5 17.1-2.2 25.7-3 6.2-.5 13.1-2.7 14.9-9.5 1.5-5.9-1.8-12.2-6.7-15.4-6.4-4.2-14.7-3-21.7-1.7-5.4 1.1-3.1 9.2 2.2 8.2z"/></svg>
+ data/PawnRedTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M544.2 397.5c-8.2-10.2-28.5-15.1-41.3-13-28.2 4.6-41.8 32-45.4 47.5s17.2 23.8 31.7 29.7c-5.1 1-10.5 2.2-14 6.1-3.5 3.9-3.2 11.5 1.6 13.3 2.4.9 5.1.2 7.7.6 7.3 1.2 9.7 10.5 10.1 18 1.2 22.1-1.8 44.5-8.6 65.6-3.9 11.9-9.4 23.8-19.3 31.2-5.2 3.9-11.5 6.4-15.8 11.4s-5.3 13.9.2 17.4c-9.1-2.6-14.6 12.5-8.6 20s16.8 8.2 26.2 8.5c27.3.7 54.5 1.5 81.8 2.2 8.9.2 18.6.2 25.4-5.7 6.8-5.9 6.7-19.7-1.9-22-4 0-8 .1-12 .2 6.6-7 5.4-19.9-2.3-25.5-3-2.2-6.6-3.3-9.5-5.6-2.8-2.2-4.7-5.4-6.4-8.5-18.2-32.6-27.4-70.6-26-108.1-.2 5.5 14-1.4 15.3-4.7 2.2-5.6-4-7.5-3.7-11.1.3-5 1.2-5 3.1-10.3 6.1-17.7 27.1-38.1 11.7-57.2z" opacity=".7" fill="#f72d2d"/><path d="M478.7 452.2c-14.7-1.4-24.8-15.7-24.6-29.8.3-16.2 11.4-29.6 25.2-36.8 13.5-6.9 30.4-9.5 45-4.8 14.9 4.8 24.1 18.6 24.1 34.1 0 8.6-2.9 16.8-7.7 23.9-2.3 3.4-5 6.5-8.1 9.3-1.6 1.5-3.2 2.8-5 4.1-.7.5-1.3 1-2 1.3-.4.2-.8.4-1.3.5-.8 0-.6.2.4.5-2.5-4.8-9.8-.5-7.2 4.2 5 9.4 16.9-.7 21.5-5.1 6.9-6.5 12.3-14.6 15.3-23.6 6-18 .8-39.2-14.7-50.7-15.7-11.7-38.2-11.2-55.9-4.7-18.6 6.8-34.6 21.5-37.6 41.8-3.1 20.9 10.6 42.1 32.4 44.1 5.6.6 5.5-7.8.2-8.3z"/><path d="M481.9 454.1c-6.7-2.4-14.4 0-18.9 5.5-4.1 4.9-6.8 13.9-4.1 20.1 1.5 3.5 5 4.4 8.5 5.1 4.2.9 8.4 1.5 12.7 1.9 8.6.7 17.2.1 25.7-1.4 5.3-1 3-9-2.2-8.1-11 2-22.4 1.9-33.4-.4-.9-.2-2.8-.2-3.5-.8-.6-.5-.4-2.4-.3-3.3.2-2.2.8-4.4 1.9-6.3 2.4-4 6.9-5.9 11.3-4.3 5.1 1.9 7.3-6.1 2.3-8z"/><path d="M474.2 461.3c9.5 3.5 19.5 4.2 29.5 2.5 5.3-.9 3-9-2.2-8.1-8.5 1.5-17 .5-25-2.5-5.2-1.8-7.4 6.3-2.3 8.1zm10.4 26.8c-2.5 39.4-8.4 83.1-40.3 110.3-4.1 3.5 1.8 9.4 5.9 5.9 33.7-28.6 40.1-74.7 42.8-116.2.4-5.3-8-5.3-8.4 0zm30-1c-.2 23.5 4 46.9 12.5 68.8 4.2 10.8 9.3 21.3 15.4 31.2 4.1 6.6 12.9 22.7 22.9 15.6 4.4-3.1.2-10.3-4.2-7.2-4 2.8-14.4-17.4-16-20.4-5-9-9.1-18.4-12.5-28.2-6.6-19.3-9.9-39.5-9.7-59.8 0-5.4-8.3-5.4-8.4 0z"/><path d="M454.2 598.3c-6-4.1-14.8-2.5-18.7 3.8-4.2 6.8-1.3 15 1.6 21.7 2.1 4.9 9.3.7 7.2-4.2-1.5-3.4-3.4-7.9-2.3-11.6 1.1-3.7 5.1-4.4 8-2.4 4.4 3 8.6-4.3 4.2-7.3z"/><path d="M438.4 620.8c-1.2.4-3.4-1.2-4.7-1.4-1.8-.3-3.5 0-5.1.8-3.1 1.7-4.8 5.2-5.5 8.5-1.9 9.2-.8 19.4.6 28.6.8 4.7 8.4 3.5 8.2-1.1 0-1-.1-2-.1-3-.2-5.4-8.6-5.4-8.4 0 0 1 .1 2 .1 3 2.7-.4 5.5-.7 8.2-1.1-1.2-7.3-1.5-14.8-.9-22.2.1-1.1.4-4.8 1.4-5.3.8-.3 3.1 1.2 4 1.4 1.5.3 2.9.3 4.3-.2 5.3-1.5 3.1-9.6-2.1-8z"/><path d="M426.6 656.3c51.4 7.4 103.6 8.6 155.3 3.4 5.3-.5 5.4-8.9 0-8.4-50.9 5.1-102.4 4.1-153.1-3.1-2.2-.3-4.5.6-5.1 2.9-.6 2 .7 4.9 2.9 5.2z"/><path d="M569.9 625.4c2.2-.8 5.4-2.2 7.8-1.4 2.8 1 2.2 5.5 2.2 7.9.1 7.7-.3 15.4-1.2 23.1h8.4c0-.9.1-1.8.1-2.7.2-5.4-8.2-5.4-8.4 0 0 .9-.1 1.8-.1 2.7-.2 5.5 7.8 5.2 8.4 0 .6-5.4 1-10.8 1.1-16.3.1-4.8.6-10.1-.6-14.8-2.4-9.5-12.4-9.2-19.9-6.6-5.1 1.8-2.9 9.9 2.2 8.1z"/><path d="M538.4 603.9c7.8-.9 15.5-1.1 23.3-.6 1.5.1 3.6-.1 5.1.5 1.3.5 1.3 1.2 1.2 2.7-.2 3.5-1.9 6.7-4.2 9.1-3.7 3.9 2.2 9.8 5.9 5.9 5.3-5.6 11.3-19.5 2.2-24.7-4.3-2.5-10.9-2.1-15.7-2.2-6-.1-11.9.2-17.8.8-5.3.7-5.4 9.1 0 8.5zm-74.9 9.3c11.6.4 23.2.8 34.8 1.3 5.4.2 5.4-8.2 0-8.4-11.6-.4-23.2-.8-34.8-1.3-5.4-.1-5.4 8.2 0 8.4zm59.8.9c1.1-.4 2.2-.7 3.3-1.1 2.1-.7 3.6-2.9 2.9-5.2-.7-2.1-2.9-3.7-5.2-2.9-1.1.4-2.2.7-3.3 1.1-2.1.7-3.6 2.9-2.9 5.2.8 2 3 3.6 5.2 2.9zm-18.7-103c-.4 13.9 2.7 28.4 6.7 41.7 4 13.2 9.7 28.4 21.5 36.6 4.4 3.1 8.6-4.2 4.2-7.2-4.6-3.2-7.8-8.4-10.4-13.3-3.3-6.4-5.8-13.2-7.8-20.1-3.5-12.1-6.3-25.1-5.9-37.7.3-5.3-8.1-5.3-8.3 0zm8.3-114.5c11.5 6.8 15.6 22.7 8.8 34.2-2.7 4.7 4.5 8.9 7.2 4.2 9-15.4 3.5-36.6-11.8-45.6-4.6-2.8-8.8 4.4-4.2 7.2zm3.9 68.9c4.6-.9 11.1-2.3 15.3.8 2.6 1.9 4.4 6.1 1 8.1-1.7 1-4 1.1-5.9 1.2-3 .2-5.9.4-8.9.7-6.1.6-12.1 1.5-18.1 2.5-5.3 1-3 9 2.2 8.1 8.5-1.5 17.1-2.2 25.7-3 6.2-.5 13.1-2.7 14.9-9.5 1.5-5.9-1.8-12.2-6.7-15.4-6.4-4.2-14.7-3-21.7-1.7-5.3 1.1-3.1 9.2 2.2 8.2z"/></svg>
+ data/PawnWhiteTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M550.3 408.4c-8.2-10.2-28.6-15.4-41.4-13-15.4 2.8-33.4 17.1-37.1 32.6-3.7 15.5 8.9 38.9 23.4 44.9-5.1 1-10.5 2.2-14 6.1s-3.2 11.5 1.6 13.4c2.4.9 5.2.2 7.7.6 7.3 1.2 9.7 10.6 10.1 18.1 1.2 22.3-1.8 44.7-8.7 65.9-3.9 11.9-9.4 23.9-19.3 31.3-5.2 3.9-11.6 6.4-15.9 11.4s-5.3 14 .2 17.5c-9.1-2.6-14.7 12.6-8.6 20.1 6.1 7.5 16.8 8.3 26.3 8.5 27.3.7 54.7 1.5 82 2.2 8.9.2 18.7.2 25.5-5.7s6.7-19.8-1.9-22.1c-4 0-8 .1-12 .2 6.6-7 5.4-20-2.3-25.7-3-2.2-6.6-3.3-9.5-5.6-2.8-2.2-4.7-5.4-6.5-8.6-18.3-32.8-27.4-70.9-26.1-108.6-.2 5.5 14-1.4 15.3-4.7 2.2-5.6-4-7.5-3.7-11.2.4-5 1.2-5.1 3.1-10.3 6.2-17.6 27.3-38.1 11.8-57.3z" opacity=".7" fill="#ebce91"/><path d="M491.5 470.2c-14.7-1.4-24.8-15.7-24.6-29.8.3-16.2 11.4-29.6 25.2-36.8 13.5-6.9 30.4-9.5 45-4.8 14.9 4.8 24.1 18.6 24.1 34.1 0 8.6-2.9 16.8-7.7 23.9-2.3 3.4-5 6.5-8.1 9.3-1.6 1.5-3.2 2.8-5 4.1-.7.5-1.3 1-2 1.3-.4.2-.8.4-1.3.5-.8 0-.6.2.4.5-2.5-4.8-9.8-.5-7.2 4.2 5 9.4 16.9-.7 21.5-5.1 6.9-6.5 12.3-14.6 15.3-23.6 6-18 .8-39.2-14.7-50.7-15.7-11.7-38.2-11.2-55.9-4.7-18.6 6.8-34.6 21.5-37.6 41.8-3.1 20.9 10.6 42.1 32.4 44.1 5.6.6 5.6-7.8.2-8.3z"/><path d="M494.7 472.1c-6.7-2.4-14.4 0-18.9 5.5-4.1 4.9-6.8 13.9-4.1 20.1 1.5 3.5 5 4.4 8.5 5.1 4.2.9 8.4 1.5 12.7 1.9 8.6.7 17.2.1 25.7-1.4 5.3-1 3-9-2.2-8.1-11 2-22.4 1.9-33.4-.4-.9-.2-2.8-.2-3.5-.8-.6-.5-.4-2.4-.3-3.3.2-2.2.8-4.4 1.9-6.3 2.4-4 6.9-5.9 11.3-4.3 5.2 1.9 7.3-6.1 2.3-8z"/><path d="M487 479.3c9.5 3.5 19.5 4.2 29.5 2.5 5.3-.9 3-9-2.2-8.1-8.5 1.5-17 .5-25-2.5-5.1-1.8-7.3 6.3-2.3 8.1zm10.5 26.8c-2.5 39.4-8.4 83.1-40.3 110.3-4.1 3.5 1.8 9.4 5.9 5.9 33.7-28.6 40.1-74.7 42.8-116.2.3-5.3-8.1-5.3-8.4 0zm30-1c-.2 23.5 4 46.9 12.5 68.8 4.2 10.8 9.3 21.3 15.4 31.2 4.1 6.6 12.9 22.7 22.9 15.6 4.4-3.1.2-10.3-4.2-7.2-4 2.8-14.4-17.4-16-20.4-5-9-9.1-18.4-12.5-28.2-6.6-19.3-9.9-39.5-9.7-59.8 0-5.4-8.4-5.4-8.4 0z"/><path d="M467 616.3c-6-4.1-14.8-2.5-18.7 3.8-4.2 6.8-1.3 15 1.6 21.7 2.1 4.9 9.3.7 7.2-4.2-1.5-3.4-3.4-7.9-2.3-11.6 1.1-3.7 5.1-4.4 8-2.4 4.4 3 8.6-4.3 4.2-7.3z"/><path d="M451.3 638.8c-1.2.4-3.4-1.2-4.7-1.4-1.8-.3-3.5 0-5.1.8-3.1 1.7-4.8 5.2-5.5 8.5-1.9 9.2-.8 19.4.6 28.6.8 4.7 8.4 3.5 8.2-1.1 0-1-.1-2-.1-3-.2-5.4-8.6-5.4-8.4 0 0 1 .1 2 .1 3 2.7-.4 5.5-.7 8.2-1.1-1.2-7.3-1.5-14.8-.9-22.2.1-1.1.4-4.8 1.4-5.3.8-.3 3.1 1.2 4 1.4 1.5.3 2.9.3 4.3-.2 5.2-1.5 3-9.6-2.1-8z"/><path d="M439.5 674.3c51.4 7.4 103.6 8.6 155.3 3.4 5.3-.5 5.4-8.9 0-8.4-50.9 5.1-102.4 4.1-153.1-3.1-2.2-.3-4.5.6-5.1 2.9-.6 2 .6 4.9 2.9 5.2z"/><path d="M582.7 643.4c2.2-.8 5.4-2.2 7.8-1.4 2.8 1 2.2 5.5 2.2 7.9.1 7.7-.3 15.4-1.2 23.1h8.4c0-.9.1-1.8.1-2.7.2-5.4-8.2-5.4-8.4 0 0 .9-.1 1.8-.1 2.7-.2 5.5 7.8 5.2 8.4 0 .6-5.4 1-10.8 1.1-16.3.1-4.8.6-10.1-.6-14.8-2.4-9.5-12.4-9.2-19.9-6.6-5 1.8-2.9 9.9 2.2 8.1z"/><path d="M551.2 621.9c7.8-.9 15.5-1.1 23.3-.6 1.5.1 3.6-.1 5.1.5 1.3.5 1.3 1.2 1.2 2.7-.2 3.5-1.9 6.7-4.2 9.1-3.7 3.9 2.2 9.8 5.9 5.9 5.3-5.6 11.3-19.5 2.2-24.7-4.3-2.5-10.9-2.1-15.7-2.2-6-.1-11.9.2-17.8.8-5.3.7-5.3 9.1 0 8.5zm-74.8 9.3c11.6.4 23.2.8 34.8 1.3 5.4.2 5.4-8.2 0-8.4-11.6-.4-23.2-.8-34.8-1.3-5.4-.1-5.4 8.2 0 8.4zm59.8.9c1.1-.4 2.2-.7 3.3-1.1 2.1-.7 3.6-2.9 2.9-5.2-.7-2.1-2.9-3.7-5.2-2.9-1.1.4-2.2.7-3.3 1.1-2.1.7-3.6 2.9-2.9 5.2.7 2 3 3.6 5.2 2.9zm-18.7-103c-.4 13.9 2.7 28.4 6.7 41.7 4 13.2 9.7 28.4 21.5 36.6 4.4 3.1 8.6-4.2 4.2-7.2-4.6-3.2-7.8-8.4-10.4-13.3-3.3-6.4-5.8-13.2-7.8-20.1-3.5-12.1-6.3-25.1-5.9-37.7.2-5.3-8.2-5.3-8.3 0zm8.3-114.5c11.5 6.8 15.6 22.7 8.8 34.2-2.7 4.7 4.5 8.9 7.2 4.2 9-15.4 3.5-36.6-11.8-45.6-4.7-2.8-8.9 4.4-4.2 7.2zm3.8 68.9c4.6-.9 11.1-2.3 15.3.8 2.6 1.9 4.4 6.1 1 8.1-1.7 1-4 1.1-5.9 1.2-3 .2-5.9.4-8.9.7-6.1.6-12.1 1.5-18.1 2.5-5.3 1-3 9 2.2 8.1 8.5-1.5 17.1-2.2 25.7-3 6.2-.5 13.1-2.7 14.9-9.5 1.5-5.9-1.8-12.2-6.7-15.4-6.4-4.2-14.7-3-21.7-1.7-5.3 1.1-3 9.2 2.2 8.2z"/></svg>
+ data/README.md view
@@ -0,0 +1,2 @@+This directory contains built-in sketches that are available for students+to use in their programs.
+ data/RaindropTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M474 476.1c-16.9 23-37.8 60.4-38.5 89-.6 25.3 12.4 48.5 30.1 66.6s61.1 17.5 83.1 5.1c27-15.3 30.5-47.5 27.5-78.3-3.4-35.6-27.2-70.4-39.7-103.9-29.8-80.4-40.3-8.6-62.5 21.5z" opacity=".7" fill="#00d3e6"/><path d="M508.8 391.9c-16.9 44.6-50.3 80-70.3 123-17.7 37.9-24.3 87.6 4.7 122.1 26.2 31.3 75.2 37.4 110.6 18.9 18.4-9.6 30.4-26.3 36.2-45.9 6.5-22.1 3.8-45.4-2.2-67.2-7.5-27.3-19-53.9-31.1-79.5-12.1-25.6-25.7-50.5-40.8-74.5-3.4-5.4-11.5.4-8.1 5.8 24.7 39.4 45.4 81.1 61.7 124.6 13.9 37.1 26.2 88.4-7.6 119.2-28.2 25.7-79.3 23.4-106.4-2.6-30.5-29.2-25.5-77.2-10-112.4 19.7-44.9 54.8-81.3 72.3-127.3 2.2-6-6.8-10.2-9-4.2z"/><path d="M480.5 524.2c-5.6 23.9-4.6 50.5 8.9 71 5.3 8 12.6 17.7 7.7 25.8-3.2 5.3-10.8 6.7-16.6 4.5-5.8-2.2-10.2-7.2-13.6-12.4-8.8-13.2-13.4-29-14.3-44.8-.6-10.2.4-20.6 3.8-30.2 2-5.6 4.7-11 7.4-16.3 13.7-26.6 25.4-58.9 43.4-82.6 1.8 28.2-20.3 57.9-26.7 85zm42.6 102.5c10.1 2.3 21.5-3.8 25.2-13.5-4.2-3.9-10.8-3-16.5-1.9-4.3.9-9.3 2.2-11.1 6.3-1.7 4.1 4.2 9.5 6.9 5.9" opacity=".7" fill="#91f6ff"/></svg>
+ data/RobotTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0{opacity:.7;fill:#ffbf00;enable-background:new}.st1{opacity:.7;fill:#ff7044}.st1,.st2,.st3{enable-background:new}.st2{opacity:.7;fill:#a1eefc}.st3{fill:#677a7d}.st3,.st4{opacity:.7}.st5{fill:#9ab4ba}</style><path class="st0" d="M343.7 276.9c1.7 10.4 4.4 21.3 11.8 29.1 12 12.6 32.1 12.9 49.8 12.2 60.6-2.2 121.3-4.4 181.9-6.6 25-.9 53.6-3.5 68.5-23 10.9-14.1 11.2-33.2 10.5-50.8s-2.1-35.1-4-52.6c-.9-8-2.1-16.4-6.7-23.1-9.9-14.3-30.7-15.5-48.4-15.2-71.1 1.2-164-10.4-233.8 2.4-53.3 9.7-39.9 87.6-29.6 127.6zm-.3 381.2c-.1 9.6 0 21.5 4.9 29.7 11 18.6 38.5 14.6 59.9 14.3 66.2-.9 132.5-3.2 198.7-2.7 39.8.3 48.5 1.8 56.3-17.9 2.7-6.8.9-19.8.6-27.2-3-71.2-15-141.9-39.2-208.9-1.9-5.2-5.8-10.6-9.6-14.6-7.1-7.6-18.5-8.8-28.9-9.5-27.2-1.9-54.4-3.7-81.6-5.6-47.9-3.3-129.4-16.4-139.7 40.8-12.6 70.5-20.4 133.1-21.4 201.6z"/><path class="st1" d="M725.5 310.6c4.2 45.8 42.5 75.2 67.8 77.8 25.3 2.6 50.5-10.7 65-31.6 17-24.5 11.2-72-11.3-61.2-10 4.8-11.5 36.7-22.1 40-79.5 24.9-44.2-38.6-67-40-10.6-.7-33.6 2.3-32.4 15z"/><path class="st0" d="M315.4 858.6c-4.8 6.6-6.3 16.2-1.7 22.9 4.7 6.9 13.7 8.7 21.9 10 42.1 6.5 85.2 13 127 4.7 2.8-.5 5.6-1.2 7.7-3.2 3-2.9 3.2-7.5 3.1-11.7-.1-10.7-1.3-22.2-8.4-30.2-8.3-9.3-21.9-10.8-34.2-11.7-34.9-2.3-90.2-15.6-115.4 19.2zm251-21c-9.8 1-19.4 3.5-28.4 7.3-7.5 3.2-14.8 7.6-19 14.7s-4 17.2 2.2 22.5c4.6 3.9 11.1 4.3 17.1 4.5 35.4 1.1 70.7 2.2 106.1 3.4 12.2.4 28.1-2.3 38.8-8.2 1.8-10.3 3-16.1 4.7-26.4.6-3.3-1.3-8.5-2.7-11.5-1.7-3.6-5.5-5.5-9.1-6.9-45-18.2-98-14.7-140.3 9.2M365.6 211.5l.6 38.3c.1 6.2.2 12.5 2.6 18.2 6.9 16.6 28.5 20.3 46.5 21 68.3 2.9 137-.6 204.6-10.5 2.7-.4 5.7-1 7.4-3.1 1.3-1.6 1.6-3.9 1.8-5.9 2.5-25.3 2.9-50.8 1.2-76.2-.3-5.1-.9-10.5-4.3-14.2-2.9-3.2-7.3-4.5-11.4-5.6-22.7-5.7-46.3-6.9-69.8-7.5-43.8-1-87.6 4.7-131.2 3.8-32.6-.7-48.6 2-48 41.7z"/><path class="st1" d="M309.6 492.1c-2.9 19.6 8.5 37.1 23 50.7-9.2-8.6 10.8-81.6 13.4-89.4-19 .9-33.8 21-36.4 38.7zm361 34.7c12-6.3 22.6-16 27.8-28.5s4.4-27.9-4.1-38.5c-10.1-12.5-31.2-18.2-46-14.4 0 7.9 18.1 84.1 22.3 81.4zM239.5 668.2c-2.1-8.1-4.1-17.3-8.1-24.6-10.7-19.5-28.7-36.9-50.5-39.6-13.7-1.7-27.7 3.5-38.8 12s-19.1 18-26.2 30.1c-3.5 5.9-9.2 15.2-8.8 22.1.3 6.8 9.3 16.7 16 16.3 8.5-21.5 24.4-27.7 46.5-32.7 46.5-10.5 36.7 22.5 37.7 49.2-5.6 7.8-13.8 16.6-10.4 25.7 2.9 7.8 13.6 10 20.9 6.1 2.6-1.4 4.8-3.3 6.7-5.6 10.1-9 18.9-44.2 15-59z"/><path class="st2" d="M547.3 594.7c34.1-17.7 14-73.2-12.5-88.2-23.3-13.2-56-12.9-78.4 2.2-23 15.5-30.2 44.3-14.7 68.2 20.5 31.7 74.8 33.8 105.6 17.8z"/><path class="st2" d="M558.5 575.6c9.7-9 8.4-24.4 6.2-37.4-.7-4.4-1.5-8.8-3.5-12.8-7.4-14.5-27.3-15.8-43.6-15.1-3.2.1-6.7.4-9.3 2.4-3.6 2.8-4 7.9-4.1 12.5-.2 13.9.6 27.8 2.2 41.5"/><path class="st3" d="M305.1 513.7c-1.4-6.4-2.8-14.4-4.2-20.8-.3-1.3-4.3-.7-5.3-1.5-2-1.8-5-.5-7.3.9-27.5 16.5-61.6 34.8-79 63-8.4 13.6-14.8 44.8 3 56.3 18.1 11.7 19.4-23.2 27.3-37.4 4.3-7.7 64.7-64.4 65.5-60.5zm499.2-104.2c0-1.4 0-2.9-.7-4.1-1-1.8-3.1-2.6-5-3.3-4.8-1.7-9.6-3.3-14.4-5-4.2 18-58.5 66.5-43.7 80.6 10.2 9.8 38.1-12.9 44.7-20.2 11.7-12.8 18.7-30.3 19.1-48z"/><path class="st3" d="M708.7 462.9c-3.6 7.2 2.3 16.3 9.9 18.7s16-.2 23.1-3.9c4.3-2.2 8.5-5 10.9-9.2s2.2-10.2-1.5-13.3c-4-3.3-9.9-2.2-14.9-.9-11.4 3-22.8 5.9-34.2 8.9M486.3 330c-4.8 17.5 10.1 43.8 8.1 61.8-.5 4.5-.5 9.8 3.1 12.5 2.2 1.6-13.2-6.7-10.5-6.7 13.3-.1 26.5-.2 39.8-.4 3.6-22.8 5-46 4.1-69-21.2-.5-42.5.4-63.6 2.7m-75.7 491.5c8.5-.4 17 .4 25.2 2.2-1.5-35 1.4-70.2.3-104.9-61.9-16.9-18.7 102.4-25.5 102.7zM595 811.9c0 2.8.5 6.2 3 7.3 1.1.5 2.4.4 3.6.2 5.8-.6 11.5-1.2 17.3-1.7.2-13.1 3.7-77.1-9.1-98.4-2.8-4.6-9.7-2.2-14.2-2.5-14.8-1-.7 79.5-.6 95.1z"/><path d="M361.5 134.3c-8.7-2.8-16.7 3.3-20.3 11-4.3 9.5-5.6 21-7.3 31.2-3.8 22.6-5.6 45.6-5.2 68.5.2 11.2.8 22.3 2 33.4 1 9.8 2.4 19.9 9.1 27.6 6.2 7.1 15.5 11.2 24.1 14.5 9.6 3.7 19.8 6.1 30 7.6 23.7 3.3 47.6 1.9 71.3.2 4.8-.3 4.8-7.8 0-7.5-36.3 2.6-76.8 5.7-110-12.4-8.5-4.6-13.6-10.8-15.7-20.3-2.1-9.9-2.5-20.3-3-30.4-1-20.2-.4-40.4 1.9-60.5 1.3-11.3 3.1-22.5 5.4-33.6 1.5-7.3 4.1-25.7 15.5-22.1 4.8 1.5 6.8-5.7 2.2-7.2z"/><path d="M357.4 145.1c80.4-5.7 161-6.8 241.5-3.1 9.8.4 19.6.9 29.4 1.6 8.2.5 17 1.2 24.2 5.4 14.5 8.4 16.9 28.8 18.7 43.9 2.2 19.4 1.9 39.2-1.2 58.5-2.5 16-6.4 32.6-15.6 46.2-5 7.3-11.8 13.2-20.1 16.5-9.4 3.8-19.7 4.8-29.8 5.3-22.2 1.3-44.6-.1-66.5-4.1-4.7-.9-6.7 6.4-2 7.2 20.5 3.7 41.3 5.3 62 4.6 17.7-.6 37-1.9 51.4-13.4 12.7-10.1 19.5-25.7 23.6-41 5.2-19.2 7.3-39.4 6.9-59.3-.4-17.9-1.7-38-9.3-54.4-3.4-7.4-8.9-13.8-16.2-17.5s-15.5-4.8-23.7-5.4c-42.5-3.1-85.4-3.9-128-3.9-48.5 0-97.1 1.8-145.5 5.2-4.6.6-4.7 8.1.2 7.7zm11.8 20.4c-8 5.8-11.2 14.6-12.3 24.2-1.3 11.8-.1 24 .2 35.8.4 13.6.2 27.3 1.2 40.8.8 11 4.9 19.8 14.9 25.1 12.5 6.5 27.2 9.1 41.1 9 4.8-.1 4.8-7.6 0-7.5-13.3.2-29.4-2-40.6-9.8-5.3-3.7-7.2-9.2-7.9-15.4-.7-7.1-.5-14.4-.7-21.5-.4-14.7-.9-29.4-1.2-44.1-.2-10.1-.2-23.5 9-30.1 4-2.9.2-9.4-3.7-6.5z"/><path d="M387.1 165.4c44.7-1.1 89.5-2.2 134.2-3.4 21.5-.5 43.1-1.6 64.6-.9 10.7.4 21.4 1.3 32 3.2 4.2.8 10 1.3 13.4 4.2 3.7 3.1 4.4 9.1 5.4 13.5 4.7 20.9 6.2 42.4 4.5 63.8-.7 8.7-1.3 18.6-5.7 26.4-4.5 8-12.5 8.9-20.9 9.7-28.8 2.9-57.8 3.5-86.7 4.4-32.8 1.1-65.9 1.4-98.5 5.1-4.7.5-4.8 8 0 7.5 61.5-6.8 123.7-3.2 185.2-9.5 8.1-.8 16.4-1.5 22.6-7.3 5.9-5.5 8.5-13.9 9.8-21.6 3.5-21.4 3-43.6-.2-65-.8-5.2-1.7-10.3-2.9-15.4-1.1-4.8-2-10.1-5-14.2-5.5-7.8-17.4-8.7-26-9.9-22.1-3.2-44.4-2.6-66.7-2.1-53 1.3-106 2.6-159 4-4.9.1-4.9 7.6-.1 7.5zm92.7 158.3c2.1 23.9 4.1 47.7 6.2 71.6.3 3.3 3.9 4.9 6.4 2.6 3.3-2.9 4.4-6.8 3.5-11.1-1-4.7-8.2-2.7-7.2 2 .4 1.7-.4 2.8-1.6 3.8 2.1.9 4.3 1.8 6.4 2.6-2.1-23.9-4.1-47.7-6.2-71.6-.4-4.7-7.9-4.7-7.5.1zm47.2 2.5c.8 22.4 1.6 44.7 2.4 67.1.2 4.8 7.7 4.8 7.5 0-.8-22.4-1.6-44.7-2.4-67.1-.2-4.8-7.7-4.9-7.5 0z"/><path d="M357.9 427.8c66.6-19.8 136.7-26.8 205.9-20.4 19.7 1.8 39.3 4.8 58.8 8.7 4.7 1 6.7-6.3 2-7.2-69-14.1-140.5-14.9-209.9-2.4-19.8 3.6-39.4 8.3-58.7 14-4.7 1.4-2.7 8.7 1.9 7.3zm-7.5 6.3c-13.9 67.9-22.6 136.9-26 206.2-.4 8.7-.8 17.4-1 26.1-.2 7-.8 14.1 1.2 20.9 3.2 11.2 11.5 20.4 22.3 24.7 6.2 2.5 12.6 2.7 19.2 2.7 8.8-.1 17.7-.1 26.5-.2 17.7-.1 35.3-.3 53-.4l119.2-.9c4.8 0 4.8-7.5 0-7.5-67.6.5-135.2 1.4-202.8 1.5-11.8 0-22.6-5.9-28.1-16.6-3-5.9-3.3-12-3.1-18.5.2-8.4.5-16.8.9-25.2 1.4-33.1 4.1-66.2 8-99.1 4.4-37.4 10.5-74.7 18-111.6.8-4.8-6.4-6.8-7.3-2.1z"/><path d="M619.5 404.7c15 21.4 21 47 26.8 72 6.5 28.1 12.1 56.4 16.8 84.8 4.8 28.6 8.7 57.4 11.8 86.2.8 7.1 1.5 14.3 2 21.4.4 5.6 1 11.2-.5 16.8-2.6 9.5-9.8 17.3-19.1 20.6-6.2 2.2-12.4 1.7-18.8 1.3-8.2-.4-16.3-.7-24.5-.8-16.4-.2-32.7.1-49.1 1-4.8.3-4.8 7.8 0 7.5 15.2-.8 30.5-1.2 45.8-1.1 7.6.1 15.3.3 22.9.6 6.4.3 12.9 1.2 19.3.2 10-1.5 19-7.2 25-15.3 7.2-9.8 7.4-20.7 6.5-32.4-4.7-60.2-14.8-120.4-27.7-179.3-6.6-29.9-12.6-61.8-30.5-87.4-2.9-3.8-9.4-.1-6.7 3.9zm-266.7 39.9c-23.7.9-44.7 17.5-49.7 40.8-2.5 11.5-1.1 23.3 3.8 34 5.4 11.7 14.5 21.3 23.4 30.4 3.4 3.5 8.7-1.8 5.3-5.3-14.9-15.3-29.9-32.9-25.6-55.8 3.8-20.7 21.8-35.9 42.8-36.6 4.8-.1 4.8-7.6 0-7.5z"/><path d="M314.2 484c-3.5-4.3-8.3-4.1-13.1-2.4-5.6 2-11.2 4.2-16.7 6.6-11.2 4.9-22.1 10.7-32.2 17.6-19.1 13-36 29.6-47.2 50-6.1 11.2-10.4 23.3-12.6 35.9-.8 4.7 6.4 6.7 7.2 2 4.5-25.8 18-48.5 37.1-66.2 10.2-9.4 21.6-17.5 33.7-24.2 6.2-3.4 12.5-6.5 19-9.2 3.2-1.3 6.4-2.6 9.6-3.8 3-1.1 7.4-4 9.8-1 3.2 3.8 8.5-1.6 5.4-5.3zm4 30.7c-10.6-3.2-20.5.2-29 6.8-8.7 6.8-16.4 15.5-23.5 23.8-17.5 20.3-29.8 44.7-36.1 70.7-1.1 4.7 6.1 6.7 7.2 2 5.8-23.8 16.6-46.4 32.3-65.2 6.4-7.7 13.5-15.3 20.9-22.1s16-11.7 26.2-8.7c4.6 1.3 6.6-6 2-7.3z"/><path d="M219.5 560.3c7.5 9.4 16.3 17.5 26.3 24 4.1 2.7 7.8-3.8 3.8-6.5-9.5-6.2-17.7-14-24.8-22.9-3-3.7-8.3 1.6-5.3 5.4zm23.8-43.4c7.1 10.4 15.4 19.8 25 27.9 3.6 3.1 9-2.2 5.3-5.3-9.1-7.7-17.1-16.5-23.8-26.4-2.7-4-9.2-.2-6.5 3.8zm399.5-76.2c13.5.2 26.4 4.3 37.8 11.5 11 6.9 22.1 15.8 22.1 29.9.1 23.5-18.7 48.5-41.5 54.5-4.7 1.2-2.7 8.5 2 7.2 20.9-5.5 36.8-23.6 43.7-43.5 3.7-10.5 5-22.9-.1-33.2-5-10.2-16.5-18.1-26.2-23.5-11.6-6.5-24.6-10.2-38-10.3-4.6-.2-4.6 7.3.2 7.4z"/><path d="M688.9 456c22.8 13.5 51.2-.8 67.8-17.7 12.7-13 34.6-46.3 11.3-60.1-4.2-2.5-7.9 4-3.8 6.5 8.3 4.9 6.9 15.5 3.9 23.3-4 10.2-10.7 19.4-18.6 27-14.1 13.5-37.9 25.8-56.8 14.6-4.2-2.5-7.9 4-3.8 6.4z"/><path d="M708.8 487.5c10.1 5.1 21.7 3.5 32.1 0 10.5-3.5 20.5-8.5 29.7-14.6 16.9-11.4 31-27 38.8-46 4.1-10 6.2-20.6 6.1-31.4 0-4.8-7.5-4.8-7.5 0 .2 22.7-10.6 43.6-26.7 59.2-8.7 8.5-18.9 15.3-29.9 20.5-11.2 5.3-26.7 11.9-38.8 5.9-4.3-2.2-8.1 4.3-3.8 6.4z"/><path d="M734.8 283.6c-15.1 8-14 28-11.5 42.3 3.3 18.6 11.2 36.1 25.3 49 27.1 24.8 67.7 28.2 99.3 9.6 19.9-11.7 25.7-37.6 26.8-59.1.3-4.8-7.2-4.8-7.5 0-.5 9.3-2.2 18.5-5.1 27.4-2.7 8.2-6.5 16.4-13.3 21.9-6.7 5.5-15.4 8.6-23.6 11-8.1 2.4-16.3 3.7-24.8 3.3-31.3-1.3-58.3-23.2-67.2-53-3.8-12.6-9.9-38 5.2-46 4.5-2.2.7-8.6-3.6-6.4z"/><path d="M735.3 293.7c10.4-3.3 21-4.7 31.9-4.1 4.8.3 4.8-7.2 0-7.5-11.5-.6-22.9.9-33.8 4.4-4.6 1.4-2.7 8.7 1.9 7.2z"/><path d="M764.1 284.2c-2 12.4-4 25.5 1.4 37.4 5.1 11.2 15.3 16.8 27.4 17.2 11.6.5 24.2-2.1 33.3-9.8 8.7-7.3 13.2-18.8 12.3-30.1-.4-4.8-7.9-4.8-7.5 0 .8 9.2-2.6 18.3-9.7 24.4-7.3 6.3-17.7 8.1-27.1 8-10-.1-18.4-4.2-22.4-13.8-4.1-9.9-2.2-21.1-.5-31.3.8-4.7-6.4-6.7-7.2-2z"/><path d="M832.1 297.1c12.1-1.6 24.3-2.1 36.5-1.6-1.2-.9-2.4-1.8-3.6-2.8 0 .4 0 .8-.1 1.1-3.2 3.6 2.1 8.9 5.3 5.3 2.2-2.5 3-5.2 2-8.4-.5-1.6-1.9-2.7-3.6-2.8-12.9-.5-25.7.1-38.4 1.9-4.9.7-2.9 7.9 1.9 7.3z"/><path d="M866.2 292.2c8.6 18.5 6.8 40.5-4.4 57.5-2.7 4 3.8 7.8 6.5 3.8 12.7-19.3 14.1-44.2 4.4-65.1-2.1-4.4-8.6-.6-6.5 3.8zM739.7 449.5c7 10.2 16.2 18.5 27.2 24.4 4.3 2.3 8-4.2 3.8-6.5-9.8-5.2-18.2-12.5-24.5-21.7-2.8-3.9-9.2-.2-6.5 3.8zm23.2-26.6c12.1 2.2 23.6 6.3 34.4 12.2 4.2 2.3 8-4.2 3.8-6.5-11.3-6.2-23.5-10.6-36.2-12.9-4.7-.9-6.8 6.3-2 7.2zM483 328.8c17.8-1.4 35.7-1.6 53.5-.5 4.8.3 4.8-7.2 0-7.5-17.8-1.1-35.7-.9-53.5.5-4.8.3-4.8 7.8 0 7.5zM221.6 742.9c36.4-24.5 35.1-82.5 12-115.4-12.1-17.2-30.8-29.2-51.7-32.4-20.6-3.2-40.8 2.6-56.6 16.3-17.8 15.3-28.2 37.8-35.1 59.8-1.4 4.6 5.8 6.6 7.2 2 10.7-34.6 33.8-72.6 74.8-71.5 19.2.5 37.7 9.5 50.3 23.8 12.7 14.5 19.3 33.8 19.8 52.9.6 21.3-6 45.5-24.5 58-3.9 2.7-.2 9.2 3.8 6.5z"/><path d="M121 698.3c6-12.1 14.8-22.6 25.8-30.5 10.6-7.5 24.1-14.1 37.4-13.5 14.4.7 20.8 13.5 18.2 26.6-1.4 7.2-5.2 13.6-9.3 19.7-1.9 2.8-3.8 5.5-5.7 8.2-2.1 3-4.8 6.1-5.9 9.6-2.2 7.4 5.9 12.7 11.2 16.2 6.7 4.5 14.2 7.6 22.1 9.4 4.7 1.1 6.7-6.1 2-7.2-7.7-1.8-14.9-4.9-21.4-9.4-1.6-1.1-3.2-2.3-4.6-3.6-2-1.9-2.2-2.8-.9-5.2 1.8-3.5 4.6-6.8 6.9-10 8.1-11.6 15.5-24.4 13.3-39.1-2-13.4-12.5-22-25.8-22.6-13.5-.6-27.5 5.5-38.6 12.7-13.2 8.7-24.1 20.8-31.1 34.9-2.2 4.3 4.3 8.1 6.4 3.8zm352.5-204.5c-26.9 5.1-48.5 30.2-48.6 57.7-.1 29.1 22.3 54.8 50.8 59.4 16.7 2.7 35.1.8 51.6-2.7 15-3.2 28.3-10.3 37.6-22.6 17.9-23.4 14.8-58-7.6-77.6-12.6-11-29.3-15.8-45.8-16.5-14.8-.6-35 .1-45.4 12.4-3.1 3.6 2.2 9 5.3 5.3 8.2-9.7 23.7-10.3 35.5-10.3 13 0 26.3 2.4 37.6 9.1 22.8 13.4 31.4 43.5 18.6 66.7-6.4 11.6-16.8 20-29.3 24-14.1 4.5-30.2 5.9-45 5.7-14-.2-27.6-3.7-38.3-13.3-8.9-8-15.1-18.8-17.4-30.6-5.3-27.5 15.4-54.5 42.3-59.6 4.8-.8 2.8-8-1.9-7.1z"/><path d="M482.7 513.2c-11 3.5-20.5 10.5-26.9 20.1-5.7 8.5-9 21-.9 29.1 3.4 3.4 8.7-1.9 5.3-5.3-6.2-6.2-.7-16.7 3.7-22.3 5.3-6.8 12.6-11.7 20.8-14.4 4.5-1.5 2.6-8.7-2-7.2zm2.7 72.6c5.7.4 11.4.9 17 1.3 4.8.4 4.8-7.1 0-7.5-5.7-.4-11.4-.9-17-1.3-4.8-.4-4.8 7.1 0 7.5zM380.5 704.2c.8 37.6 1.6 75.2 2.5 112.7.1 4 6.6 5.3 7.4 1 .5-2.7 1-5.3 1.5-8 .9-4.7-6.4-6.7-7.2-2-.5 2.7-1 5.3-1.5 8 2.5.3 4.9.7 7.4 1-.8-37.6-1.6-75.2-2.5-112.7-.2-4.8-7.7-4.8-7.6 0zm34.5-2.5c.6 45.8.7 91.7.4 137.5 0 4.8 7.5 4.8 7.5 0 .3-45.8.2-91.7-.4-137.5-.1-4.8-7.6-4.8-7.5 0zm166.1 10.4c2.3 41 3.5 82.1 3.6 123.2 2.5-.3 4.9-.7 7.4-1-.5-1.5-1-3.1-1.5-4.6-1.5-4.5-8.8-2.6-7.2 2 .5 1.5 1 3.1 1.5 4.6 1.3 3.9 7.4 3.4 7.4-1-.1-41.1-1.3-82.2-3.6-123.2-.4-4.8-7.9-4.8-7.6 0zm34.9 1.4c3.5 37.3 5.6 74.7 6.4 112.1.1 4.8 7.6 4.8 7.5 0-.8-37.4-2.9-74.8-6.4-112.1-.5-4.8-8-4.8-7.5 0zM92.2 675.2c4.5 8.6 11.3 15.6 19.8 20.4 4.2 2.4 8-4.1 3.8-6.5-7.4-4.2-13.1-10.2-17.1-17.7-2.3-4.3-8.8-.5-6.5 3.8zm54.5-41.7c4.6-3.8 10.1-5.8 16-6.1 4.8-.2 4.8-7.7 0-7.5-8 .3-15.1 3.2-21.3 8.3-3.7 3 1.6 8.3 5.3 5.3zm692.2-293.8c-2.8 7.7-8.9 14-16.5 17-4.4 1.8-2.5 9 2 7.2 10.3-4.1 17.9-11.9 21.8-22.3 1.6-4.4-5.7-6.4-7.3-1.9z"/><path d="M517.2 857.6c24.4-15.2 51.6-25.8 80.1-29.9 27.4-3.9 57.3-1.8 82.6 10 5.8 2.7 11.4 6 16.3 10.1 2.3 2 4.5 4.1 6.4 6.4.6.8 2 2.1 2.3 3.1.1.7-.2 2.6-1.2 2.1-4.3-2.2-8.1 4.2-3.8 6.5 5.7 2.9 11.9-.9 12.5-7.2.5-5.5-4.9-10.7-8.6-14.2-10.3-9.8-23.8-15.8-37.3-19.8-33.1-9.8-69-7.5-101.7 2.7-18 5.6-35.3 13.7-51.4 23.7-4.1 2.6-.3 9.1 3.8 6.5z"/><path d="M512.7 848.4c-4 14.8-4.8 29.8-2.6 45 .2 1.7 2.1 2.6 3.6 2.8 56 5.8 112.7 5.6 168.6-.7 4.7-.5 4.8-8 0-7.5-56 6.3-112.6 6.5-168.6.7 1.2.9 2.4 1.8 3.6 2.8-2-13.8-1-27.6 2.6-41 1.3-4.7-6-6.7-7.2-2.1zm182.6 46.9c10.8-6.4 12.6-20.3 15.5-31.4 1.2-4.7-6-6.7-7.2-2-2.3 8.8-3.3 21.8-12 26.9-4.2 2.5-.4 9 3.7 6.5z"/><circle cx="569" cy="220.7" r="36.6"/><path d="M475.7 851.9c3.6 13.4 4.6 27.3 2.6 41 1.2-.9 2.4-1.8 3.6-2.8-56 5.8-112.6 5.6-168.6-.7-4.8-.5-4.8 7 0 7.5 56 6.3 112.6 6.5 168.6.7 1.5-.2 3.4-1 3.6-2.8 2.2-15.1 1.4-30.2-2.6-45-1.2-4.5-8.4-2.5-7.2 2.1z"/><path d="M297.6 867.4c16.5-18 40-28.8 63.5-34.1 26.1-5.9 53.9-5 79.4 3.3 12.4 4 24.5 10.1 33.9 19.3 3.4 3.4 8.7-1.9 5.3-5.3-18.4-18.1-45.6-25.6-70.6-27.9-28.2-2.6-57.3 2.4-82.9 14.8-12.6 6.1-24.5 14.2-34 24.6-3.2 3.5 2.1 8.9 5.4 5.3z"/><path d="M292.3 864c-3.2 10.5 2 22.5 12.1 26.9 4.4 1.9 8.2-4.5 3.8-6.5-7.1-3.1-11-10.9-8.7-18.4 1.4-4.6-5.8-6.5-7.2-2z"/><g class="st4"><path class="st5" d="M559.9 221.1c-1.1-5.6 3.3-12.3 9.1-13.1 2.7-.4 5-2 5-5 0-2.4-2.3-5.4-5-5-12.5 1.6-21.2 13.1-18.8 25.7 1.3 6.4 10.9 3.7 9.7-2.6z"/></g><circle cx="440.8" cy="222.3" r="36.6"/><g class="st4"><path class="st5" d="M449 195.6c-7-1.8-14.7.4-19.6 5.7-5.6 5.9-6 14.1-5.5 21.8.4 6.4 10.3 6.4 10 0-.2-4.5-.8-10 2-13.9 2.4-3.3 6.7-4.9 10.6-3.9 6.1 1.6 8.8-8.1 2.5-9.7z"/></g><path d="M465 170.6c-23.1-5.4-50.1-1.9-68 14.7-17.5 16.3-19.9 42.1-9.6 63 11 22.4 35 33.5 59.3 30.1 22-3 42.5-17.1 49.3-38.8 7.2-22.8-.6-48.4-22.1-60.1-4.2-2.3-8 4.2-3.8 6.5 16.5 9 23.7 27.2 20.2 45.4-3.6 19.1-18 32.6-36.5 37.9-20.6 5.9-43.8.1-56.1-18.1-11.2-16.6-12.8-40.1.4-56.1 15.3-18.5 42.6-22.5 64.9-17.2 4.7 1 6.8-6.2 2-7.3zm150.9 18.6c-6.8-12.2-20.2-18.8-33.5-21.6-12.3-2.5-26.2-2.6-37.9 2.7-4.4 2-.6 8.4 3.8 6.5 9.7-4.4 22-4 32.1-1.9 11.4 2.3 23.1 7.6 29 18.1 2.4 4.2 8.9.4 6.5-3.8z"/><path d="M541.2 172.3c-27.1 17.4-34.3 57.9-13 82.7 21.5 25 63.8 25.6 84.4-.6 11.8-15 15.6-35.7 9.7-53.8-1.5-4.6-8.7-2.6-7.2 2 9.1 27.5-7.9 60.2-37.8 63.7-13.8 1.6-28.6-2.7-39.1-11.9-10.7-9.4-15.8-23.1-14.9-37.2.9-15.2 8.8-30.1 21.7-38.4 4.1-2.7.3-9.2-3.8-6.5z"/></svg>
+ data/RocketShipTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0,.st2{opacity:.7;fill:#e3043c}.st2{fill:#a19ea1}</style><path class="st0" d="M543.1 715.4c-2.4-15.9-8-33.7-24.6-40.7-6-2.5-13.6-3.1-18.9.4-4.1 2.7-5.9 7.3-7.2 11.6-8.6 29.7-2.1 61 6 90.8 5.8 21.4 10.2 52.3 24.8 70.1 33.5-13.5 23.8-106.3 19.9-132.2z"/><path d="M610.2 281.2c-5.1-11.4-19.5-22.5-29.5-29.4-32.4-22.2-113.1-22.6-149.3-9.3-33.3 12.1-45.4 42.5-59 74.3-47 110.4-71 227.4-56.9 348.5 1.1 9.5 2.7 19.7 8.8 26.7 7 8.1 18.2 10.2 28.5 11.5 43 5.8 86.4 8.3 129.8 7.3-1.3-5 .4-12.3 3.6-19.4.7-9 2.8-17.9 6.4-26.1 4.5-10.1 13.3-18.4 24.5-18.5 11.3-.1 21.2 7.4 26 17.6 6.5 13.7 7.2 29 7.1 44.1 29.7 11.9 62 1.8 90.3-14.1 7-3.9 13.8-8.9 17.8-16.1 3.8-6.8 4.7-14.8 5.4-22.7 11.6-127.3-1.5-258.6-53.5-374.4z" opacity=".7" fill="#ffce38"/><path class="st0" d="M479.5 158c-30.3 18.8-53.9 48-65.8 81.6 59.2-21.2 126.7-17.8 183.5 9.1 12.8-.1 10.9-20.4 3.3-30.7-32.1-43.7-87.1-69.6-141.2-66.4M293.9 689c-51.7-3.1-65.5 56.4-63.4 99.1 1.9 37.7 21.3 67 32.3 103.1 17.6-24.1 20.8-44.1 38.1-68.4 17.3-24.3 40.4-45.3 68.5-35.2-20-12.4-40.4-25-55.7-43-15.2-18-24.8-42.4-19.2-65.3M678.1 667c3.4 37.8-5.6 76.8-14 113.8 16.2-2.4 30.6 26.7 32.9 43s6.9 33 20.8 41.8c18.8-7.9 22-39.9 22.5-60.2.8-31.5 4.9-55.8-.7-86.8-5.1-28-25.2-57.8-53.7-58.3"/><path class="st2" d="M392 504.2c1.5 8.8 5 17.2 9.4 25 23.8 41.9 75.9 65.6 123.1 56.2 30.1-6 57.4-24.6 74-50.5s22-58.5 14.7-88.3c-12.4-50.1-72.8-97.5-126.3-84-50.8 12.8-103.4 90.4-94.9 141.6z"/><path d="M496.7 442.7c-13.5-4.1-27.2 5.6-36.4 16.3-7.8 9.2-14.5 20.3-14.3 32.3.2 17 20.1 41 36 47.2 20.6 8 40.3-5.7 55.7-21.5 15.4-15.9 17.7-43.8 2.9-60.3-15.1-16.9-40.6-17.9-63.3-17.7" opacity=".7" fill="#a8eddc"/><path class="st2" d="M406.6 799.8c32.5 2.9 55.9-.9 88.1 4-15.6-24-19.4-51.3-17.2-79.2-45.8 15.9-168.7-44.4-166.1-12.9 3.9 45.8 15.4 80.9 95.2 88.1zm150.8-5c33.9-5.7 67.7-11.4 101.6-17.1 2.7-.5 5.5-1 7.5-2.9 2.4-2.4 2.6-6.1 2.7-9.4.7-22.7 1.4-45.3 2.1-68-24.1 23-53.1 32.6-85.3 37.3-14.5 2.1-22-3.7-30.1 9-3.4 5 4.8 50.5 1.5 51.1z"/><path d="M460.5 155.2C403 218.8 359.1 294.1 330.6 374.9c-28.4 80.4-41.6 166.4-38.1 251.7 2 48.1 9.3 96 22.1 142.5 1.4 5 9.1 2.9 7.8-2.1-22.5-81.7-27.8-167.6-17-251.5 10.7-83.6 37.3-165.2 78.2-238.9 23.1-41.5 50.7-80.4 82.6-115.6 3.4-3.9-2.2-9.6-5.7-5.8z"/><path d="M301.8 684.3c-37.7-7-71 21.3-81.7 55.9-12.9 41.7 1.9 84.6 18.3 122.9 7 16.4 14.9 40.1 35.9 41.9 1.8.2 3.4-1.4 3.9-3 7.7-25.3 15.7-52.4 33.8-72.6 16-17.9 41.3-30 65.2-22.3 5 1.6 7.1-6.2 2.1-7.8-25.7-8.2-53.3 3.6-71.2 22.4-20.4 21.3-29.3 50.6-37.7 78.2l3.9-3c-15.6-1.3-22.2-22.1-27.3-34-7.9-18.2-15.4-36.8-19.8-56.2-7.8-34-5.1-74.7 22.7-99.2 13.4-11.9 31.9-18.7 49.8-15.4 5 .9 7.2-6.9 2.1-7.8zm158.7-517.1c7-16.4 25.6-19 41.5-16.1 19.2 3.4 35.4 14.2 50.1 26.6 31.6 26.7 53.8 62.6 69.6 100.5 16.4 39.4 26.7 81 35.1 122.7 10.4 51.4 19.6 103.3 23.6 155.6 4.7 59.8 2 120.4-15.6 178.1-1.5 5 6.3 7.1 7.8 2.1 16.2-53.1 20-109.1 17-164.4-3.1-55.2-12.5-109.8-23.1-163.9-8.5-43.7-18.8-87.4-35.5-128.8-15.9-39.4-38.1-77-70.3-105.2-15-13.2-31.9-25.2-51.6-30.1-16-3.9-36.1-4.1-48.6 8.4-3 3-5.2 6.5-6.9 10.3-2.1 4.9 4.9 9 6.9 4.2z"/><path d="M683.8 663.9c7.3-8.1 19.8-8 28.9-3 10.8 5.9 17.1 17.9 21.3 29 9.5 24.8 13.9 51.5 13.7 77.9-.2 27-5.2 53.8-15 78.9-2.3 5.8-4.5 12.2-8.2 17.3-1.5 2-3.7 4.5-6.3 4.8-3.4.4-6-2.7-7.9-5.1-8-10.4-12-23.4-16.4-35.6-8.2-22.9-23-51.5-51.4-50.8-5.2.1-5.2 8.2 0 8.1 13.5-.3 24.5 8.8 31.7 19.5 8 11.8 11.7 25.7 16.8 38.8 2.4 6.3 5.1 12.6 8.6 18.4 3.2 5.4 7.2 11.7 13.4 14 13.1 4.8 20.6-10.7 24.7-20.3 22.7-53.5 25-118 2.5-172-5.3-12.8-13.5-25.8-26.8-31.5-11.8-5-26.5-4-35.4 5.8-3.4 3.9 2.3 9.6 5.8 5.8zm-168.2-5.5c-12.7 1.2-19.8 12-23.6 23.2-4.7 14-6.1 29.7-6.9 44.4-1.6 31.2 3 62.8 13.3 92.3 5.9 16.7 13.6 32.7 23 47.7 1.5 2.4 5.6 2.9 7 0 13.6-28.6 22-59.3 24.6-90.9 1.3-15.8 1.1-31.7-.5-47.4-1.4-13.6-3.4-27.5-8.9-40.1-5.1-11.7-14-22.5-27.3-24.5-5.1-.8-7.3 7-2.1 7.8 24.5 3.7 28.4 38.1 30.3 57.5 3 29 .9 58.5-6.3 86.8-4 16-9.6 31.6-16.8 46.6h7C497.9 813.3 486 753.4 496.5 697c2-10.5 5.6-29.4 19-30.7 5.3-.3 5.3-8.4.1-7.9z"/><path d="M347.2 784.9c49.7 23.5 105.2 33.5 160 28.5 5.1-.5 5.2-8.5 0-8.1-53.3 4.8-107.5-4.6-155.9-27.4-4.7-2.2-8.8 4.8-4.1 7zm229.3 12.8c24.4-5.8 48.8-11.7 73.1-17.5 10.5-2.5 21.4-4.4 31.6-7.9 7.9-2.7 15.6-7.1 19.2-15 2.1-4.7-4.8-8.8-7-4.1-3.5 7.7-11.5 10.7-19.1 12.8-10.6 2.9-21.3 5.2-32 7.7-22.6 5.4-45.3 10.8-67.9 16.2-5.1 1.3-2.9 9.1 2.1 7.8zM353 716.2c42.2 17.4 90.2 19.1 133.6 4.9 4.9-1.6 2.8-9.4-2.1-7.8-42.2 13.9-88.3 12.1-129.3-4.9-4.8-2-6.9 5.8-2.2 7.8zm-39 25.3c45 16.8 92.5 26.2 140.5 28 5.2.2 5.2-7.9 0-8.1-47.3-1.8-94-11.1-138.4-27.7-4.9-1.8-7 6-2.1 7.8zm361.3-64.2c-27.8 31.8-69.2 49.7-111.4 48.2-5.2-.2-5.2 7.9 0 8.1 44.1 1.7 88-17.3 117.1-50.5 3.4-3.9-2.2-9.7-5.7-5.8zM486.9 356.9c-48 10.2-86.5 51-97.7 98.3-3.2 13.5-4.1 27.5-2.5 41.3.6 5.1 8.7 5.1 8.1 0-5.4-46.2 19.2-93.1 58.5-117.4 11.1-6.9 23.1-11.7 35.9-14.4 4.9-1.1 2.8-8.8-2.3-7.8zm67.4 18c44.6 18.4 73.6 66.8 67.5 114.8-3.1 24.1-14.3 47.2-31.2 64.6-17.8 18.2-41.8 29.4-67.1 31.7-14.2 1.3-28.5.1-42.2-3.8-13.6-3.9-30-10.5-38.4-22.6-2.9-4.2-9.9-.2-7 4.1 7.9 11.5 21.1 18.3 33.8 23.2 13 5 27.1 7.5 41 7.7 27.7.4 55.3-8.7 76.7-26.5 20.2-16.7 34.5-40.6 40.3-66.1 5.8-25.8 2.6-52.6-9-76.3-12.9-26.3-35.2-47.4-62.3-58.5-4.7-2-6.8 5.8-2.1 7.7z"/><path d="M455.1 499.3c-11.1-20.5 1.5-46.8 21.1-56.7 19-9.7 44.1-5.4 60 8.5 16.6 14.5 20.2 37.8 12.4 57.9-8.2 20.8-27.7 34.1-50.2 32.6-12-.8-24-5.7-33.1-13.6-4.6-3.9-8.5-8.6-11.4-13.8-2.8-5-6.6-13.5-1.6-18.4 3.7-3.6-2-9.3-5.7-5.7-10.2 9.9-1.9 26.2 5.2 35.3 7.9 10.2 19.1 17.5 31.4 21.4 25.2 8 52.1-.8 66.8-23 14-21.1 15-50.7-.9-71-15.7-20-44.9-28.5-69-20.4-27.9 9.4-46.6 43.6-31.8 71 2.4 4.5 9.3.5 6.8-4.1zm55.9-99.9c.1-1.8 2.6-1.9 3.7-1.1l-1.8-4.5c-.9 4-1.7 8.1-2.6 12.1-1.1 5.1 6.7 7.2 7.8 2.1.9-4 1.7-8.1 2.6-12.1.4-1.9-.3-3.4-1.8-4.5-6.3-4.7-15.4.7-15.8 8-.5 5.1 7.6 5.1 7.9 0zm81.7 87.3c-.4-3.5 1.4-6.9 5-7.8-1-.1-2.1-.3-3.1-.4.9.4.3 0 .2 0-.1-.1-.1-.1-.1-.2v.4s-.2.3-.1.1c.1-.1.2-.3.3-.4-5 1.3-2.9 9.1 2.1 7.8 6.8-1.8 7.8-12.9.6-14.9-3.4-.9-7.7 2.4-9.7 4.9-2.4 3-3.8 6.8-3.3 10.7.2 2.2 1.7 4 4 4 2.1-.2 4.3-2 4.1-4.2zm-65.9 87c-1.2-1.3-2.5-2.5-3.7-3.8-1.5-1.5-4.2-1.6-5.7 0s-1.6 4.1 0 5.7c1.2 1.3 2.5 2.5 3.7 3.8 1.5 1.5 4.2 1.6 5.7 0s1.6-4.1 0-5.7zm-104.6-91.1c-2.2.4-4 2.2-4.5 4.3-.5 2 0 4.1.9 5.9 2 4 7.1 5.6 10.5 2.3 1.5-1.5 1.6-4.2 0-5.7s-4.1-1.6-5.7 0c-.5.5.8-.5.2-.2.6-.3.5-.3 1.3-.3-.7 0 1.1.2.5.1-.6-.1 1 .5.4.1-.5-.3.7.7.3.2-.1-.1-.2-.3-.3-.3-.2-.1.5.9.2.2-.1-.2-.2-.3-.3-.5-.4-.6.1.2.1.4 0-.1-.1-.4-.2-.5-.2-.7.3-.1 0 .4v-.5c.2.4-.2 1.1 0 .4-.1.2-.2.5-.3.7.2-.3.1-.2-.4.4.4-.4-.8.5-.4.3.1-.1-1 .3-.1.1 2.1-.4 3.4-3 2.8-5-.8-2.2-2.8-3.2-5-2.8zm-17.4-227.2c50.7-30.5 116-33.5 170-9.9 15.4 6.7 29.9 15.6 42.8 26.4 3.9 3.3 9.7-2.4 5.7-5.7-47.6-40-114.4-53.6-174.3-38-17 4.4-33.2 11.3-48.2 20.3-4.6 2.6-.5 9.6 4 6.9z"/></svg>
+ data/ScrollTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st3{fill:#d1b484}</style><path d="M341.8 378.2c17.4 67.1 39.8 132.9 67 196.7 13.8 32.4 24.9 65 28 100.1s-4.8 73.8-34.5 92.6c54 4.2 106.8-14.1 159.5-26.6s111.1-18.7 158.6 7.3c16.1-68.1 10.9-141.1-14.8-206.2-5.6-14.3-12.7-28.8-25-37.9-12.3-9.1-31.3-10.9-42.2-.1 20.7-13.5 31.9-38.1 34.8-62.6s-1.2-49.2-5.4-73.5c-.8-4.4-1.7-9.1-5-12.1-3.7-3.3-9.2-3.4-14.2-3.2-36 1.3-71.8 6.9-106.5 16.7-1-8.9-4.6-17.5-10.2-24.5-8.8 17.2-31.8 19.9-51.1 20.4-25.5.7-51 1.4-76.4 2-32.6.9-77.9-9.6-64.2-52.6-8.7 20.5-3.8 42.8 1.6 63.5z" opacity=".7" fill="#ffe09e"/><path d="M396.6 355.9c32.1 2 64.2 3.9 96.4 5.9 4.9.3 10.1.5 14.3-2.1 9.8-6.1 12.1-25.9 23.2-22.7 2.6 10.6 14.4 16.6 25.2 16.8 10.9.1 21.2-4.2 31.6-7.6 26.8-8.8 55.6-11.6 83.6-8.1 6.9.9 14.3 2 20.6-1 8-3.8 11.8-13.5 11.4-22.4-1-18.6-17.4-33.5-35.2-38.8s-37-3.1-55.5-.9c-43.5 5.3-87 10.5-130.5 15.8-37.7 4.5-83.4-7.6-117.9 0-.3-1 56.5 66.6 32.8 65.1z" opacity=".7" fill="#ffefcc"/><g opacity=".7"><path class="st3" d="M329.5 361.9c11.9 2.2 23.7 4.5 35.5 6.7 7.9 1.5 17.4 2.5 22.8-3.4 1.6-1.7 2.6-3.9 3.4-6.1 6.9-19.5-9.9-43.3-30.5-43.5-20.7-.2-37.8 23.4-31.2 43m50.9 312.1c14.4 17.9 10.4 47.7-8.4 61.1-4-5-8-9.9-12-14.9 3.7 9 3.2 19.1 5.5 28.5s9.1 19.2 18.9 19.3c10.6.1 17.5-11 21.2-21 10.6-28.3 13.6-59.5 8.7-89.3"/><path class="st3" d="M378.7 679.8c-.9-9-13-13.4-21.2-9.5s-12.6 12.9-14.8 21.7c-4.4 17.9-1.5 37.4 7.9 53.3 2.9 4.9 6.7 9.8 12.1 11.6 7.2 2.5 15.4-1.1 20.5-6.8 5.1-5.7 7.7-13.1 10.2-20.3"/></g><path d="M369.4 289.2c51.9 1.5 103.8 1.4 155.7-.5 25.9-.9 51.8-2.3 77.7-4.1 12.9-.9 25.9-1.9 38.8-3 11.5-1 23.8-2.5 34.8 2.1 19.3 8.1 28.6 30.4 28.4 50.2 0 5.8 9 5.8 9 0 .1-18.5-6.8-38.2-21.2-50.5-18.8-16.1-43.2-11.5-66-9.7-54.4 4.3-108.9 6.8-163.5 7.3-31.3.3-62.5 0-93.8-.9-5.7-.1-5.7 8.9.1 9.1zm14.2 86.9c29.8-5.7 60.1-8.3 90.4-7.6 12 .2 25.8 3 37.2-1.7 4.9-2 8.4-5.4 11.4-9.6 2.6-3.7 4.7-9.1 9.5-10.3-1.5-.4-2.9-.8-4.4-1.2 6.1 7.3 11.2 15.2 15.5 23.6 2.6 5.2 10.4.6 7.8-4.6-4.7-9.1-10.3-17.6-16.9-25.4-1-1.2-2.9-1.5-4.4-1.2-10.5 2.6-11.5 14.4-19.9 19.3-5.4 3.2-12.3 2.9-18.2 2.6-7.1-.3-14.3-.7-21.5-.8-29.8-.4-59.6 2.4-88.9 8-5.7 1.3-3.3 10 2.4 8.9z"/><path d="M548.8 368.7c32.3-12.1 66.7-17.9 101.3-16.8 8.5.3 17.1.9 25.6 2.1 7.7 1 15.8 2.9 23.5.6 11-3.2 19.1-17.5 9.8-26.9-4.1-4.1-10.5 2.2-6.4 6.4 4.3 4.4-1.5 10.5-5.8 11.8-6.8 2-14.3-.1-21.1-1-14.5-1.9-29.2-2.6-43.9-2-29.1 1.1-58 6.9-85.3 17.1-5.5 2-3.2 10.8 2.3 8.7zM356.3 748c-7-16.8-14.7-34.9-12-53.5 1.2-8.2 4.5-16.8 10.8-22.5 6.6-5.9 14.9-6.4 20.3 1.4 4.8 6.9 7.1 16 7.9 24.3.4 4.5.4 9.1-.2 13.5-.4 2.9-1.1 12.8-4.5 13.8-3.2.9-6.6-4.9-7.9-7.1-2-3.7-3.2-8-3.6-12.2-.9-8.4 1.3-16.6 6-23.7 3.2-4.8-4.6-9.4-7.8-4.6-9.4 14.1-10.2 34.7.1 48.7 4.2 5.7 12.4 10.6 19.1 5.9 6.9-4.8 7.7-17.6 8.1-25.2.5-9.7-1.1-19.6-4.6-28.6-2.9-7.5-7.2-15.3-14.9-18.6-17.3-7.4-32 11.6-36.1 26.2-6.2 22.1 2.3 44.2 10.7 64.4 2.1 5.5 10.8 3.2 8.6-2.2zM348 458.5c19.8-2.7 38.9-8.8 56.7-17.8 5.2-2.6.6-10.4-4.6-7.8-17.2 8.7-35.5 14.3-54.6 16.9-5.6.8-3.2 9.5 2.5 8.7zM738.5 664c-33.8 13-69.3 20.7-105.5 22.7-5.8.3-5.8 9.3 0 9 37-2 73.4-9.6 107.9-23 5.4-2 3.1-10.8-2.4-8.7z"/><path d="M368 284c-15.4 1.2-28.5 11.1-35.9 24.4-8.8 15.8-9.2 34.7-7.8 52.3 3 38.6 14.5 75.8 28.2 111.7 27.6 72.2 66.5 144.9 63.4 224.4-.4 10.9-1.7 21.7-4 32.3-1.8 8.3-4.3 16.9-9.5 23.7-4.9 6.4-12 10.5-20.2 8.7-6.5-1.5-12.4-6-11.7-13.3.6-5.8-8.5-5.7-9 0-1.4 13.5 12 22.3 24.2 22.8 15.3.5 25.6-12.5 30.8-25.5 6.8-17.1 8.4-37 8.6-55.2.2-19.7-2.2-39.5-6.2-58.8-16.5-79.5-60.7-149.9-78.9-228.9-5-21.7-9-45.1-6.7-67.4 2-18.9 13.4-40.7 34.6-42.4 5.9-.1 5.9-9.2.1-8.8z"/><path d="M376.9 668.4c11.3 1.3 22.3-.7 32.7-5.4 5.3-2.4.7-10.2-4.6-7.8-8.9 4.1-18.4 5.3-28.1 4.2-5.8-.7-5.8 8.3 0 9zM393.8 777c45.5.8 88.9-14.3 132.2-26 44.4-12.1 89.6-17.8 135.6-14.2 26.1 2 51.9 6.9 77 14.4 5.6 1.7 8-7.1 2.4-8.7-44.1-13.1-90.5-18.2-136.5-14.8-22.8 1.7-45.3 5.5-67.5 11.1-22.3 5.6-44.2 12.5-66.4 18.3-25.2 6.5-50.8 11.4-76.9 11-5.7-.2-5.7 8.8.1 8.9zm291.1-317.8c-8.7-35.9-7.6-73.2 2.5-108.6 1.6-5.6-7.1-8-8.7-2.4-10.5 37-11.5 76-2.5 113.5 1.3 5.5 10.1 3.2 8.7-2.5z"/><path d="M741.9 743c13.1-64.1-7.8-127.7-28.6-187.7-6.2-17.9-12.5-35.8-17.9-54-1.7-5.6-10.4-3.2-8.7 2.4 22.7 76.4 63.2 155 46.5 236.9-1.1 5.7 7.6 8.2 8.7 2.4z"/><path d="M679 465.6l-37.5 30.3c-3.6 2.9.3 8.9 4.4 7.5 15-4.7 30.5-3.9 45 2.2 5.3 2.2 7.7-6.5 2.4-8.7a72.32 72.32 0 0 0-49.8-2.2c1.5 2.5 2.9 5 4.4 7.5l37.5-30.3c4.5-3.6-1.9-9.9-6.4-6.3zM335.2 353.1c.7-11.8 3.9-25.1 14-32.5 9.4-6.9 21.6-6.3 28.9 3.2 6.9 8.9 11 24 5.7 34.5-2.4 4.8-7.5 9.2-13.1 9.1-5.1-.1-10.5-5-9.6-10.3 1-5.7-7.8-8.1-8.7-2.4-2 12 8.3 22.9 20.5 21.6 13.8-1.5 22-14.8 22.3-27.7.3-12.7-5.1-27.7-15.2-35.8-10.1-8.1-24.2-7.4-34.7-.4-13.5 9-18.2 25.3-19.1 40.7-.4 5.8 8.7 5.8 9 0z"/><path d="M354.7 352c12.8.8 25.6-.9 37.7-5 5.5-1.9 3.1-10.6-2.4-8.7-11.5 3.9-23.2 5.5-35.3 4.7-5.8-.5-5.8 8.6 0 9z"/></svg>
+ data/SignTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0{opacity:.7;fill:#d17d24}</style><path class="st0" d="M316.1 573.7c122.9-3.3 248.3-11.8 369.8 2.2-3.6-37.3-2.1-72.5 1.1-109.8-6-.6-17-3.8-22-7.2 2.1-4.7 6-8.5 10.7-10.5 2.5-1.1 5.3-1.7 7-3.7 1.6-1.8 2.1-4.4 2.4-6.8 4.1-27.5 5-55.5 2.7-83.1-121.8-24.6-247.7-11-371.2 2.8-4 18.9-4.5 38.4-1.6 57.4 8.8.4 17.3 4.1 24 9.8 5.8 5 2.4 14.5-5.2 14.9-17.1.9-20.5-1.7-14.1 44.1 1.1 7.2-4.5 89.9-3.6 89.9z"/><path class="st0" d="M485.1 688c-.5 13.9-1.5 27.8-1.6 41.7-.3 31 3.7 61.8 7.6 92.5 11 .1 22 .1 33.1.2 6.7-81 4.4-162.5 2-243.8-29.1-1.8-46.1-9.6-45.5 23.1.6 28.9 5.3 57.2 4.4 86.3z"/><path d="M311.2 355c99-9.2 199-18.5 298.3-7.9 28 3 55.7 7.7 83.1 13.9 5.2 1.2 7.4-6.8 2.2-8-98.4-22.4-199.1-21.4-299.2-13.8-28.2 2.2-56.3 4.8-84.4 7.4-5.2.6-5.2 8.9 0 8.4zm23.4 228c92.5-3.9 185.1-5 277.7-3.3 26.2.5 52.3 1.2 78.5 2.1 5.3.2 5.3-8.1 0-8.2-92.5-3.3-185.1-3.8-277.7-1.5-26.2.7-52.4 1.5-78.5 2.7-5.3.2-5.3 8.5 0 8.2z"/><path d="M690.4 363.9c-.1 28.7-.9 57.4-2.4 86.1-.3 5.3 8 5.3 8.2 0 1.5-28.7 2.3-57.4 2.4-86.1.1-5.3-8.1-5.3-8.2 0z"/><path d="M689.4 447c-6.7.9-13 2.9-19 5.8-4.8 2.3-.6 9.4 4.2 7.1 5.4-2.6 11.1-4.2 17.1-5 5.2-.7 2.9-8.6-2.3-7.9z"/><path d="M670.3 462.6c7.4 2.2 14.1 5.6 20.4 10 4.4 3 8.5-4.1 4.2-7.1-6.9-4.8-14.4-8.4-22.4-10.8-5.1-1.6-7.3 6.3-2.2 7.9z"/><path d="M689.5 468.1c-1.7 34-2.1 68-1.4 102 .1 5.3 8.4 5.3 8.2 0-.7-34-.2-68 1.4-102 .3-5.3-7.9-5.3-8.2 0zM311.9 360.4h.4c1.7 0 3.6-1.2 4-3 .9-4.8-4.4-9-8.2-4.7-2 2.3-1.4 5.5-1.3 8.3.2 3.8.4 7.7.5 11.5.5 16.2-.1 32.5-1.6 48.6-.2 2.3 2.1 4.1 4.1 4.1 10 .3 19.2 3.6 27.3 9.6 4.3 3.2 8.4-4 4.2-7.1-9.2-6.8-20.1-10.4-31.5-10.7l4.1 4.1c1-10.9 1.6-21.8 1.7-32.7.1-5.3 0-10.6-.1-15.9-.1-2.6-.2-5.3-.3-8-.1-1.2-.1-2.4-.2-3.5 0-.9-.1-1.8-.2-2.6.1-1 0-1.2-.3-.4-1.3.4-2.7.7-4 1.1.2 0 .4.1.5.1l-2.9-2.9c0-.4.1-.7.1-1.1 1.3-1 2.6-2 4-3h-.4c-5.2.1-5.3 8.3.1 8.2z"/><path d="M338.7 430.5c-9.3-.1-18.6.7-27.8 2.1-5.2.8-3 8.8 2.2 8 8.5-1.4 17-1.9 25.6-1.8 5.3 0 5.3-8.2 0-8.3z"/><path d="M305.5 438.4c2.9 31.1 3.8 62.3 2.6 93.5-.2 5.3 8 5.3 8.2 0 1.1-31.2.3-62.4-2.6-93.5-.4-5.3-8.7-5.3-8.2 0z"/><path d="M312.1 540.1c12.2 2.8 24.7 3.6 37.2 2.2 5.2-.6 5.3-8.8 0-8.2-11.8 1.3-23.5.8-35-1.9-5.2-1.3-7.4 6.7-2.2 7.9z"/><path d="M307.4 529.8c-.4 9.3-.7 18.6-1.1 27.9-.3 8.6-.7 17.3 2.4 25.5 1.8 4.9 9.8 2.8 8-2.2-3-8.1-2.4-16.6-2-25.1.4-8.7.7-17.5 1-26.2.1-5.2-8.1-5.2-8.3.1z"/><path d="M313.1 581c9 1.1 18 .1 26.5-2.9 5-1.7 2.8-9.7-2.2-8-8 2.8-16 3.6-24.3 2.6-5.2-.6-5.2 7.6 0 8.3zm54.3-192.9c14.5-1 29-1.4 43.6-.9 5.3.2 5.3-8.1 0-8.2-14.5-.5-29.1-.1-43.6.9-5.3.4-5.3 8.6 0 8.2zm288.1 162.6c11.7-.4 23.4-.9 35.1-1.3 5.3-.2 5.3-8.5 0-8.2-11.7.4-23.4.9-35.1 1.3-5.3.1-5.4 8.3 0 8.2z"/><path class="st0" d="M477.1 325.1c.2-5.4.3-10.8.5-16.2 14.6-5.5 30.4-7.9 46-7.1-.1 9 .8 21.3 2.7 30.1-18.5.2-37-2.8-55.5-2.5"/><path d="M467.5 291c-1.3 14.9-1.6 29.8-.8 44.7.3 5.3 8.5 5.3 8.2 0-.8-14.9-.6-29.9.8-44.7.5-5.3-7.7-5.3-8.2 0z"/><path d="M469.6 305.4c21.6-4.9 44-5.4 65.8-1.3 5.2 1 7.4-7 2.2-8-23.3-4.4-47-4-70.2 1.3-5.2 1.2-3 9.2 2.2 8z"/><path d="M526.1 293.2c-.6 16.1.8 32.2 4 47.9 1.1 5.2 9 3 8-2.2-3.1-15.1-4.3-30.4-3.7-45.8.2-5.2-8.1-5.2-8.3.1zm-55.8 280.6c1.6 62.8 3.1 125.7 4.7 188.6.5 17.9.9 35.8 1.3 53.7.1 5.3 8.4 5.3 8.2 0-1.6-62.8-3.1-125.7-4.7-188.6-.5-17.9-.9-35.8-1.3-53.7-.1-5.3-8.3-5.3-8.2 0zm8.9 260.3c18.2 1 36.4-1.2 53.9-6.5 5.1-1.5 2.9-9.5-2.2-8-16.8 5.1-34.1 7.2-51.7 6.2-5.2-.2-5.2 8 0 8.3zm52.1-251.8c0 77.2 0 154.5-.1 231.7 0 5.3 8.2 5.3 8.2 0 0-77.2 0-154.5.1-231.7 0-5.3-8.2-5.3-8.2 0z"/><path d="M517.6 531.2c-7-1.5-15 0-19.8 5.2-4.8 5.3-5.2 14.6.4 19.2 5.3 4.4 13.3 3 19.4-.2 5.3-2.8 10.4-7.8 10.2-13.8-.3-7.6-8.4-12.3-15.8-14.2" opacity=".7" fill="#989c9a"/><path d="M495.2 538.4c-9.8 5.9-4.8 19.6 4.6 22.7 10.4 3.5 24.7-.6 29.1-11.1 3.8-9 .8-20.8-8.9-24.5-9.4-3.5-20.8 1.6-23.8 11.2-1 3.4 4.2 4.8 5.3 1.5 1.9-6.1 8.9-9.4 15-8 6.9 1.5 9.6 8.9 8.1 15.3-1.9 8-9.8 11.2-17.5 11.2-4 0-8.7-1-10.8-4.8-1.6-2.9-1.4-7 1.6-8.8 3.1-1.8.3-6.5-2.7-4.7z"/><path d="M515.3 524.5c-3.3 7.1-6.7 14.2-10 21.2-1.5 3.2 3.2 6 4.8 2.8 3.3-7.1 6.7-14.2 10-21.2 1.4-3.3-3.3-6-4.8-2.8z"/></svg>
+ data/SparklesTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M449.3 347c2.5 14.9-6.1 30.8-19.9 37 11.8 12 18.6 28.9 18.4 45.8.1-15.9 13.4-30.8 29.3-32.5-11.6 2.7-23.5-6.5-27.2-17.8-3.8-11.3-1.2-23.7 2.8-34.9" opacity=".7" fill="#ffe100"/><path d="M526.2 490.8c1.3 6.8 10.1 8.6 17 7.9 6.8-.7 14.9-2 19.6 3 2.1 2.2 3 5.2 3.9 8 5.9 19.2 11.8 38.3 17.8 57.5 2.9-14.4 5.9-28.9 8.8-43.3 1-5.2 2.2-10.5 4.9-15 5.5-9.1 17.7-13.6 27.8-10-3.7-11.9-16.7-17.8-25.8-26.2-12.3-11.3-18-27.9-20-44.1 2.3 36.7-26 45.7-54 62.2z" opacity=".7" fill="#52edff"/><path d="M380.3 632.3c1.6 12.9-.1 27 7.2 37.7-1.2-11-2.4-22.5.8-33.1 3.2-10.7 11.1-18.5 21.8-21.3-12.8-4.1-21.4-15-22.5-28.4.5 2.5.6 5.7 1.1 8-10.5 1.7-21.9 4.7-30.8 11 13.3 2.3 20.8 13.3 22.4 26.1z" opacity=".7" fill="#e394ff"/><path d="M434.9 320.3c3.4 19.4 5.1 44.9-14 57.1-11.1 7-32.7-.6-38.1 14.8-.9 2.6.6 6 3.6 6.2 9.7.6 19.4 1.2 29 1.8l13.5.9c1.7.1 5.6-.3 7 .6 1.9 1.3 1.7 4.4 2 6.4 2.7 19 5.4 38 8 56.9.8 5.7 9.7 4.4 8.9-1.4-1.5-10.9-3.1-21.9-4.6-32.8-.8-5.5-1.5-10.9-2.3-16.4-.7-4.9-.7-10.8-2.7-15.3-3.8-8.7-16.3-7-24-7.5l-33.9-2.1c1.2 2.1 2.4 4.1 3.6 6.2 2.3-6.6 13.7-5.1 19.2-5.6 8.7-.8 16.4-4.6 22.4-10.9 15.7-16.1 14.6-39.6 11.1-60.2-.8-5.8-9.7-4.4-8.7 1.3z"/><path d="M435.4 312.8c7 25.3 13.9 50.5 20.9 75.8.8 3 3.2 4.4 6.2 3.5 13.9-4.4 28.6-2.7 41.4 4-.4-2.6-.7-5.1-1.1-7.7-10.6 9-24.2 12.9-37.9 10.8-1.9-.3-4 1-4.7 2.8-8.2 22.5-12.8 46.1-13.3 70.1-.1 5.7 8.8 6.9 8.9 1.1.5-23.2 4.8-46 12.7-67.8-1.6.9-3.1 1.9-4.7 2.8 16 2.4 32.2-2.2 44.6-12.6 2.8-2.3 1.9-6.1-1.1-7.7-15-7.9-32.3-9-48.4-3.9 2.1 1.1 4.2 2.3 6.2 3.5-7-25.3-13.9-50.5-20.9-75.8-1.4-5.8-10.3-4.5-8.8 1.1zM569 377.6c.6 15.2 1.1 30.4 1.7 45.6.3 7.3.5 14.5.8 21.8.1 3.7.8 7.9.2 11.6-.7 4-3 5.1-6.6 6.4-23.9 8.7-45.7 21.6-64.1 39.1-3.1 3-1.3 8.7 3.5 8 13.4-2.1 26.9-3.3 40.5-3.4 5.3 0 13.6-1.2 18.2 2.2 4.5 3.3 5.1 12.1 6.3 17 6.8 27.3 13.7 54.5 20.5 81.8 1.2 4.6 8.4 5.3 8.9-.2 2.3-26.3 4.4-52.7 7-79 .5-4.8 1-10.5 4.4-14.3 3.7-4.1 10-4.9 15.1-6.1 13.2-3 26.5-6.1 39.8-9.1 3.8-.9 5.7-7.3 1-8.6-13.5-3.7-26.7-8.2-39.7-13.5-5.5-2.2-11.5-4.4-15.9-8.5-4.9-4.6-6.9-11.7-9-17.9-9-26.2-14.8-53.5-17.6-81.1-.6-5.8-9.5-4.4-8.9 1.4 2.9 29.6 9.4 58.8 19.4 86.9 2.1 6 4.5 12 9.1 16.5 4.3 4.3 9.7 7 15.2 9.3 14.2 6.1 29 11.2 43.9 15.3.3-2.9.7-5.8 1-8.6-14.5 3.3-29 6.5-43.4 10-11.5 2.7-19.6 7.9-22.4 20-1.4 6.1-1.6 12.6-2.1 18.8-.6 7.3-1.3 14.6-1.9 21.9-1.3 15.2-2.7 30.5-4 45.7 3 0 6-.1 8.9-.2-7.7-30.8-14.8-62-23.2-92.6-1.5-5.4-3.7-10.3-8.8-13.1-5.4-3-12-2.9-18-2.9-15.3 0-30.6 1.1-45.7 3.4 1.1 2.7 2.3 5.3 3.5 8 10.2-9.8 21.6-18.4 33.9-25.3 5.8-3.3 11.9-6.2 18.1-8.8 5.7-2.4 13-3.7 17.6-8 5-4.6 4.6-11.4 4.4-17.6-.3-7.9-.6-15.9-.9-23.8-.6-16.5-1.2-33.1-1.8-49.6-.3-5.6-9.2-4.2-8.9 1.5zM379.1 514.9c1.6 24.7 1.2 49.5-1.2 74.1l2.7-3.6c-18.4 6.4-36.9 12.8-55.3 19.2-4.5 1.6-2.8 7.9 1.3 8.6 12.6 2.2 25.2 4.3 37.8 6.5 2.4.4 5.9.3 7.2 2.8 1.3 2.4 1 6.3 1.4 9 .9 6.5 1.7 13 2.6 19.5 3.4 25.3 6.7 50.6 10.1 76 .6 4.9 8.8 5 8.9-.2.3-23.7 1.9-47.4 4.8-70.9.7-5.8 1.5-11.6 2.4-17.4.4-2.5.4-6.1 2.4-7.8 1.5-1.2 3.9-1.4 5.7-1.5 11.1-1 22.6-.5 33.8-.6 5-.1 4.9-8.9-.1-8.9-9.9-.1-19.5-2.7-27.6-8.3-4.8-3.3-7.2-6.4-8.5-12.3l-3.6-16.5-6.9-32.1-3.6-16.5c-1-4.5-3.3-10.6 0-14.5 3.8-4.4-3.4-9.8-7.2-5.4-7.4 8.7-1.3 23.2.8 32.9 2.9 13.6 5.9 27.2 8.8 40.8 1.3 5.9 2.2 12.1 4 17.9 1.7 5.3 5.5 9.1 10 12.3 9.5 6.8 21 10.5 32.7 10.6 0-3-.1-6-.1-8.9l-20 .3c-5.6.1-11.5-.4-17 .8-12 2.6-12.1 14.3-13.5 24.4-3.7 26.7-5.7 53.6-6.1 80.5 3 0 6-.1 8.9-.2-3.8-28.6-7.6-57.1-11.4-85.7-.9-6.4-1-13.4-2.9-19.6-1.6-5.2-5.4-7.7-10.6-8.8-13.9-3-28.1-4.9-42.1-7.3.4 2.9.9 5.7 1.3 8.6 18.4-6.4 36.9-12.8 55.3-19.2 1.4-.5 2.5-2.1 2.7-3.6 2.5-25.4 2.8-51 1.1-76.5-.5-5.6-9.4-4.3-9 1.5zm113.2 60.9c-5.2 9.9 8.5 21.4 17.3 14.6 4.1-3.1 4.7-8.8 3-13.3-1.9-4.9-6.2-7.7-11.3-7.5-2.4.1-4.1 2.9-3.8 5.1.4 2.6 2.7 3.9 5.1 3.8-.5 0 .7.3.1.1-.5-.2.5.4.7.5.2.2.7 1 .9 1.6.1.4.2 1.4.1 1.8-.1.5-.2.7-.5.9.2-.2-.8.2-.4.2.5-.1-.8-.1-.9-.1 0 0-1-.5-1.2-.8-1.5-1.3-1.6-2.2-.9-3.5 1.1-2.2-.4-5-2.5-5.9-2.3-.9-4.5.4-5.7 2.5zm-190.4-97.9c-5.6 3-8.9 9.5-6.7 15.8 2.1 5.9 8.5 9.5 14.6 8.3 2.1-.4 3.3-1.9 3.8-3.9 1-3.9-.2-8-2.6-11.1-3.6-4.6-10.6 1-7.1 5.6 1.1 1.5 1.2 2.7.8 4.5 1.3-1.3 2.5-2.6 3.8-3.9-4.2.8-7.1-4.7-2.9-7 5-2.7 1.5-11-3.7-8.3zM537 325.7c-.1.9-.2 1.7-.3 2.6-.1 1.1.2 2.4.9 3.3.7.9 1.9 1.6 3 1.7 2.4.2 4.7-1.4 5-3.9.1-.9.2-1.7.3-2.6.1-1.1-.2-2.4-.9-3.3-.7-.9-1.9-1.6-3-1.7-2.4-.2-4.7 1.4-5 3.9zm112.6 4.1c8 12.6-2.4 30.9-16.7 32.1-5.8.5-4.4 9.4 1.4 8.9 21.7-1.9 33.7-28.7 22.4-46.6-3.1-4.9-10.2.8-7.1 5.6z"/><path d="M648.2 327.6c-9.6 23.4 10.1 48.3 35.1 44.1 5.7-.9 4.4-9.9-1.4-8.9-18.3 3-32.4-14.7-25.4-31.8 2.2-5.4-6.1-8.8-8.3-3.4z"/><path d="M646.8 342.7c1.1 16.6 2.2 33.2 3.3 49.9.4 5.8 9.3 4.4 8.9-1.4-1.1-16.6-2.2-33.2-3.3-49.9-.4-5.8-9.2-4.4-8.9 1.4z"/></svg>
+ data/StarTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M376.2 509.7c-10.4 7.7-2.6 24.4 8.5 31.1 11.2 6.6 25.5 9.4 33.4 19.4 10 12.6 5.5 30.6-1.2 45s-15.5 29.4-12.7 45c27.9-19 55.8-38 83.8-57 32.5 16.2 64.9 32.3 97.3 48.5-7-27.7-14-55.5-20.9-83.2 23.9-6.4 46.3-18 65.1-33.5-13.8-15.7-32.7-27.2-53.4-32.4-9-2.3-18.4-3.5-26.7-7.6-36.2-18.3-25.5-77.2-58.9-99.9 1.2.8-46.4 85.7-51.2 93.3-18.1 28.5-39.8 14-63.1 31.3z" opacity=".7" fill="#fe0"/><path d="M561.8 633c-18.4-22-40.7-40.8-65.6-55.2l.1 7.2-10.4-10.4c-24 9.8-45.5 25.5-62.2 45.4l-24.1 18.3c28.2-6.2 48.5-34.7 77.3-37.6 16.2-1.6 31.9 5.3 46.7 12.2 11.7 8.4 24.6 15.2 38.2 20.1zm12.3-79.8c-2.5-7-7.2-13.2-13.5-17.4l67.8-17.1c-15.6 14-32.9 26-51.3 35.9" opacity=".7" fill="#ffbf00"/><path d="M442.4 475.1c5.4-16.2 12-31.9 19.8-47 3.9-7.5 8-14.8 12.4-22 3.6-5.9 7.2-11 14.5-12.2 5.7-1 11.4.9 15.4 5 5.7 6 10.2 14.1 14.7 21 9.8 15 19 30.4 27.5 46.2 2.7 5.1 10.5.6 7.8-4.5-7.6-14.1-15.7-28-24.4-41.5-4.2-6.6-8.6-13.1-13.1-19.6-3.5-5-6.8-9.9-12.4-12.8-9.1-4.8-20.5-3.9-28.6 2.4-4.9 3.8-7.9 9.3-11 14.5-4 6.7-7.8 13.5-11.4 20.5-7.8 15.3-14.4 31.2-19.9 47.6-1.9 5.5 6.8 7.9 8.7 2.4z"/><path d="M437 469.9c-17.7 5.2-35.2 11-52.5 17.6-12 4.6-28.2 8-32.6 21.8-1.6 5.1-1.2 10.8 1 15.6 2.7 6.1 8.2 9.9 13.3 13.8 13.4 10.3 28 18.9 43.5 25.6 5.3 2.3 9.9-5.5 4.5-7.8-12.8-5.5-25.1-12.3-36.5-20.4-8.1-5.7-21.9-13.5-16.8-25.5 2.4-5.7 8.2-7.4 13.5-9.6 7.1-2.9 14.2-5.6 21.4-8.2 14.4-5.2 28.9-10 43.5-14.2 5.6-1.6 3.3-10.3-2.3-8.7zm109.1 4.4c30.3 7.1 59.8 17.6 87.6 31.6 2.1 1.1 8.7 3.2 8.4 6.4-.2 2.5-4.8 4.9-6.5 6.1-6.3 4.5-12.7 8.8-19.2 13-3.1 2-36.9 23.3-38 21.2-2.8-5.1-10.6-.5-7.8 4.5 6.5 11.6 24.3-2.3 31.3-6.3 13.7-7.9 27-16.5 39.8-25.7 4.2-3.1 9-6.4 9.3-12.2.4-6.5-4.3-10.5-9.6-13.2-13.7-7-27.8-13.2-42.1-18.7-16.6-6.3-33.6-11.4-50.9-15.4-5.5-1.3-7.9 7.4-2.3 8.7z"/><path d="M411.3 558.4c-6.1 18.7-11.2 37.7-15.3 57-1.6 7.3-4.8 16.1-2.8 23.6 1.5 5.9 6.1 10.7 11.7 12.8 7.1 2.6 13 .2 19.2-3.4 8.6-5 17.2-10 25.9-15l53.4-30.9c5-2.9.5-10.7-4.5-7.8-14.9 8.6-29.9 17.3-44.8 25.9-7.5 4.3-14.9 8.6-22.4 13-4 2.3-8 4.7-12.1 7-2.8 1.6-5.5 3.5-8.9 3.3-5.4-.4-9.3-5.2-9-10.5.4-7.9 3.1-16.3 4.9-24 3.8-16.4 8.3-32.6 13.5-48.6 1.7-5.5-7-7.9-8.8-2.4z"/><path d="M495.6 610.7c17.4 9.7 35.3 18.6 53.6 26.4 8.9 3.8 17.9 7.6 27.1 10.8 6.9 2.5 14 2.3 20.1-2.3 5.5-4.2 8.5-10.9 7.8-17.8-.9-9-4.1-18.3-6.4-27-4.7-17.3-10.2-34.5-17.4-50.9-2.3-5.3-10.1-.7-7.8 4.5 6.2 14.1 10.8 28.8 15 43.5 2.2 7.8 4.2 15.7 6.1 23.6 1.5 6.5 3 13.7-4 17.6-6.3 3.5-13.9-1.1-19.8-3.4-8.3-3.2-16.6-6.7-24.8-10.4-15.3-6.9-30.3-14.5-45-22.7-5-2.5-9.5 5.3-4.5 8.1z"/></svg>
+ data/SunTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st0,.st2{opacity:.7;fill:#fb0}.st2{fill:#fffb00}</style><path class="st0" d="M390.1 396.7c-12.2-14.7-18-34.5-15.7-53.4 15.8 8.8 26.7 25.5 28.5 43.5m-64.3-28.7c-2.3-17.5-16-32.9-33.2-37.2-4.5-.2-8 4.4-8.1 8.9s2.2 8.6 4.6 12.4c7.1 10.7 16.1 20 26.5 27.5m236.2 296.6c.4 10.8.8 21.5 1.2 32.2.2 7.1 4.2 16.8 10.8 14.5 3-1.1 4.5-4.5 5.5-7.6 4.5-14.5 4.4-30.3-.3-44.8"/><path d="M680.4 574.5c9.7-1.1 20.6-1.9 28.1 4.3 1.4 1.1 2.6 2.5 3.1 4.2 1.7 5.5-5.4 10.4-11 8.9s-9.2-6.7-12.1-11.7" fill="#fb0"/><path class="st0" d="M717.9 464.6c11.5-6.3 25.5-7.8 38.1-4-3.8 14.4-17.3 25.7-32.2 26.9m-101.3-87.2c5.8-19.2 23.3-34.4 43.2-37.3-5.1 12.3-10.5 25.1-20.3 34.1s-25.3 13.4-36.7 6.4M410.8 600.7c-18.8 12-31.6 33-33.6 55.2 23-7 41.4-27.2 46.1-50.8M570 586.4c3.9 10.2 8.1 20.9 16.6 27.6s22.8 7.5 29.2-1.3c-12.8-3.9-23.3-14.4-27.3-27.2"/><path class="st2" d="M592.2 415.4c-25.6-26.5-63.9-38-100.7-37.5-35 .5-72.8 13.4-90.1 43.8l2.1-.9c-11 10.1-19.5 23.3-24.3 37.7l-4.6-4.4c-28.7-3.4-58.8 9.1-76.6 31.8-1.4 1.8-2.8 3.8-3.2 6.1-.5 2.7.5 5.5 1.8 7.9 9.3 17.9 31 24.9 50.7 28.8 12 2.4 25 4.1 36-1.1.9-.4 1.8-.9 2.6-1.4 14.6 26.9 41.9 47.4 72.1 54.4 41.9 9.8 87.1-3.7 121.5-29.6 12.3-9.3 23.5-20.3 30.8-33.8 17.4-32.6 7.5-75.4-18.1-101.8zM386 554.8c-25.6 4.7-46.5 28-48.4 54 26.4-1.4 50.3-23 54.4-49.2m96.7 48.7c-7.4 26.2-1.1 55.9 16.3 76.8 17.2-11.3 21.3-34.3 23.9-54.7.7-5.7 1.4-11.6-.7-17-5.6-14.3-25.4-14.8-40.7-12.7m155.2 13.2c5.3-7.7-3.1-17.3-10.8-22.6-10.9-7.4-22.2-14.2-33.7-20.6.8-13.1 16.9-19.4 30-18.4s26.2 6.1 38.9 3.1c18.2-4.3 31.9-24.5 50.5-22-8.6-8.6-17.3-17.2-25.9-25.8-2.9-2.9-5.9-5.9-9.6-7.8-9.3-4.9-21.2-2-29.7 4.3-8.5 6.2-14.5 15.2-20.6 23.8-12.5 17.5-45.8 36.9-40.9 59.8 2.4 12.9 40.8 41.9 51.8 26.2zm-3.3-169.5c.7 8.3 1.5 16.7 2.2 25 .4 4.2 1.9 9.6 6.1 9.8 2.3.1 4.2-1.5 5.9-3.1 9.2-8.7 17.4-18.5 24.4-29-13-2.3-25.9-5.4-38.6-9.2M566 372.5c8.3-10.3 16.8-20.9 20.5-33.5s1.7-28-8.5-36.4c-3.7 20.5-21.1 37.8-41.6 41.4-2.5 11.5 1.7 24.2 10.6 32"/><path class="st2" d="M493.3 354.9c-6.4-21-19-40-35.8-54.1-5.8-4.9-15.2-9-20.3-3.3-1.7 1.9-2.4 4.4-2.9 6.9-6.1 28.1 3.6 59.2 24.6 78.9m-86.3-152.1c-4.9 19 2.9 40.6 18.7 52.1 2.7-13.5 5.1-27.5 2.3-41s-11.8-26.6-25.1-30.3c-2.2 7.6.4 16.5 6.5 21.6m137.9.8c-2-.4-.8-3.9 1.2-3.8s3.4 1.9 4.3 3.7c6.9 13 8 28.9 2.9 42.7m-73.9 383.5c5.3 13.9 2.5 30.7-7.1 42.1-1.5 1.8-3.6 3.6-5.9 3.3-2.3-.3-3.4-4.3-1.1-4.9"/><path d="M486.6 371.1c-48.4.2-93.8 33.2-109.6 78.9-15.7 45.5 3 98.2 40.4 127.3 43.9 34.1 104.4 26.9 150.7 1.8 46.1-25 88.3-72.5 69.5-128.2-17.9-53-84.2-113.7-142-77.9-4.8 3-.4 10.5 4.4 7.5 48.7-30.1 102.3 17.2 123.5 59.2 12 23.8 13.9 50.4 1.4 74.3-11.1 21.4-29.8 38.2-49.9 50.9-40.8 25.8-96.5 38.7-140.7 13.3-37.6-21.7-60.4-68-52.8-111 8.7-49.2 55.5-87.2 105-87.4 5.7 0 5.7-8.7.1-8.7zm-48.5-10c-9.2-12.1-5.5-27.5-1.4-40.9 4.3-13.9 8.7-27.9 4.8-42.4-2.1 1.6-4.3 3.3-6.4 4.9 25.6 14.4 54.9 34.5 54 67.5-.2 5.6 8.6 5.6 8.7 0 1-36.2-30-59-58.3-75-3.3-1.9-7.4 1.2-6.4 4.9 7.6 28.3-22.8 58.6-2.5 85.4 3.4 4.4 10.9.1 7.5-4.4zm63.8-132.8c4 16 6.7 32.1 8.1 48.5.5 5.6 9.2 5.6 8.7 0-1.4-17.2-4.2-34.1-8.4-50.9-1.3-5.4-9.7-3.1-8.4 2.4z"/><path d="M530.6 356.8c-1.7-20.3 19.8-31 34.9-39.2 13.9-7.6 27.8-16.7 32.7-32.6h-8.4c7.2 22 3.3 46.4-11 64.6-3.4 4.4 2.7 10.6 6.2 6.2 16.2-20.7 21.5-48 13.3-73.1-1.3-4.1-7.1-4.2-8.4 0-5.7 18.7-26.4 25.2-41.5 34.5-14 8.7-27.9 21.9-26.4 39.7.3 5.5 9 5.5 8.6-.1zm86 27.6c5.3-11.2 18.2-13.4 29.1-15.5 10.5-2 20.7-4.6 28.4-12.5-2.5-1-5-2.1-7.5-3.1-1.4 18-9.9 34.1-23.6 45.7-4.3 3.6 1.9 9.8 6.2 6.2 15.5-13.2 24.6-31.7 26.2-51.9.3-3.9-4.9-5.7-7.5-3.1-16.1 16.5-47.6 5.8-58.9 29.7-2.3 5.1 5.2 9.6 7.6 4.5zm33.7 58.2c15.7-1 31.4-2.7 47-5l-5.4-5.4c-1.8 12.4-9.4 23-21.3 27.6-5.2 2-2.9 10.5 2.3 8.4 14.5-5.7 25.2-18.1 27.4-33.7.5-3.5-1.9-5.9-5.4-5.4-14.8 2.1-29.7 3.7-44.6 4.7-5.6.5-5.6 9.2 0 8.8zm-290.1 3.2c-35.4-8.4-60 22.1-77.2 48.1-1.1 1.7-.5 3.9.7 5.3 13.6 15.9 33.1 25.2 54 26.1 5.6.3 5.6-8.5 0-8.7-18.7-.9-35.7-9.4-47.8-23.6.2 1.8.5 3.5.7 5.3 14.9-22.4 36.4-51.5 67.4-44.1 5.3 1.3 7.6-7.2 2.2-8.4zm11.7 98.8c-18.3 1.8-31.9 13.4-42.8 27.6-2.7 3.5-5.2 7.2-7.7 10.9-2.2 3.4-5.9 7.7-6.8 11.7-2.2 9.6 11.5 10.3 17.6 11.8 5.5 1.3 7.8-7.1 2.3-8.4-3.4-.8-6.9-1.5-10.4-2.5-1.3-.6-1.5-.4-.7.7.4-.6.7-1.2 1.1-1.8.9-1 1.5-2.4 2.2-3.5 3.8-6 7.7-11.8 12.2-17.2 8.6-10.2 19.3-19 33-20.4 5.6-.7 5.6-9.5 0-8.9zm16.3 48.9c-14.4 2.3-21.5 16.3-26.5 28.5-6.9 17-11.2 34.8-13.2 52.9-.3 2.3 2.2 4.4 4.4 4.4 29.8-.8 58.1-13.1 78.8-34.6 3.9-4-2.3-10.2-6.2-6.2-19.1 19.8-45.1 31.3-72.6 32l4.4 4.4c1.7-14.8 5-29.3 10.1-43.3 4.1-11.3 9.6-27.5 23.3-29.7 5.3-.9 3-9.3-2.5-8.4zm80.4 24.9c-7.5 29.9 4.2 61.8 29 80 4.5 3.3 8.9-4.2 4.4-7.5-21.6-15.8-31.5-44.3-25-70.2 1.3-5.4-7.1-7.7-8.4-2.3zm63 3.5c.4 20.8-5.3 40.7-16.6 58.2-3 4.7 4.5 9.1 7.5 4.4 12.1-18.7 18.2-40.3 17.8-62.6 0-5.6-8.8-5.6-8.7 0zm37.9-3.3c24.4 28.4 63.8 28.2 98.1 26.7 5.6-.3 5.6-9 0-8.7-32 1.5-69.1 2.5-92-24.1-3.6-4.4-9.8 1.8-6.1 6.1zm37.7-38.3c20.7 10.5 38 26.1 50.3 45.8 3 4.8 10.5.4 7.5-4.4-13.1-20.9-31.4-37.8-53.4-49-5-2.4-9.4 5.1-4.4 7.6zm29-39.5c4.5 15.7 22 21.8 36.9 19.1 21.6-3.9 41.5-25.3 64.4-17 5.3 1.9 7.6-6.5 2.3-8.4-17.5-6.3-34.2 2.5-49.6 10-13.2 6.4-39.7 14.6-45.6-5.9-1.6-5.5-10-3.2-8.4 2.2z"/><path d="M681.5 509.7c13.7 5.1 26.1 12.7 37 22.5 4.2 3.8 10.3-2.4 6.2-6.2-12-10.9-25.7-19.1-40.8-24.8-5.3-1.9-7.6 6.5-2.4 8.5zM443.8 652.1l-21.6 45.3c-2.4 5 5.1 9.5 7.5 4.4l21.6-45.3c2.5-5.1-5.1-9.5-7.5-4.4zM562 675.8c-.4 7.8 2.3 43.2 18 33.8 5.8-3.5 5.3-11.6 5-17.4-.5-10.2-1.9-20.4-4-30.4-1.2-5.5-9.6-3.2-8.4 2.3 2.2 10.5 3.9 21.4 3.9 32.1 0 .8.4 5-1.3 4.7-.9-.2-2.7-7.2-2.9-8.2-1.5-5.6-1.7-11.2-1.4-17 .1-5.5-8.6-5.5-8.9.1zm-294.7-239c13.9 3.3 28 5.3 42.3 6 5.6.3 5.6-8.5 0-8.7-13.5-.7-26.8-2.6-39.9-5.7-5.5-1.3-7.9 7.1-2.4 8.4zm32.1-125.5c-6.9 10.2-5.9 23.3 0 33.8 6.6 11.7 18.5 19.1 29.7 25.9 4.8 2.9 9.2-4.6 4.4-7.5-15.2-9.3-40.4-27.1-26.5-47.8 3.1-4.7-4.5-9.1-7.6-4.4z"/><path d="M301 319.2c16.2 10 29.4 23.4 39.2 39.6 2.9 4.8 10.4.4 7.5-4.4-10.5-17.5-24.9-32.1-42.3-42.8-4.8-2.8-9.2 4.7-4.4 7.6zm55.8-97.2c4.8 25.1 14.6 48.8 28.9 69.9 3.1 4.6 10.7.3 7.5-4.4-13.9-20.6-23.4-43.4-28-67.8-1-5.6-9.4-3.2-8.4 2.3zm326.9 363.2c7.9 2.9 15.8 5.8 23.7 8.6 5.3 1.9 7.6-6.5 2.3-8.4-7.9-2.9-15.8-5.8-23.7-8.6-5.3-2-7.6 6.4-2.3 8.4zm39-103.6c9.3-2.2 18.7-4.3 28-6.5 5.5-1.3 3.2-9.7-2.3-8.4-9.3 2.2-18.7 4.3-28 6.5-5.5 1.3-3.2 9.7 2.3 8.4zm-21.8-102.5l10.8-12.9c1.5-1.8 1.8-4.4 0-6.2-1.5-1.5-4.7-1.8-6.2 0l-10.8 12.9c-1.5 1.8-1.8 4.4 0 6.2 1.6 1.6 4.7 1.8 6.2 0zM397.8 387c-24.6-2.5-35.7-30.1-21.8-49.7 3.2-4.6-4.3-9-7.5-4.4-18.1 25.6-1.2 59.8 29.3 62.9 5.6.5 5.5-8.3 0-8.8zm41.4 105c-3-15.5 2.4-30.9 13.8-41.6 4.1-3.8-2.1-10-6.2-6.2-13.8 12.9-19.6 31.6-16 50.1 1 5.5 9.4 3.2 8.4-2.3zm121.7-21.3c-1 1.9-1.9 3.8-2.9 5.8s-.6 4.8 1.6 6c2 1 4.9.6 6-1.6 1-1.9 1.9-3.8 2.9-5.8s.6-4.8-1.6-6c-2-1-4.9-.6-6 1.6zm-79.6 64.1h11.5c5.6 0 5.6-8.7 0-8.7h-11.5c-5.6 0-5.6 8.7 0 8.7zm46-109.3c5.6 0 5.6-8.7 0-8.7s-5.6 8.7 0 8.7zm-2.1 326.2c1.4-11.8 4.4-23.2 8.7-34.2 2-5.2-6.4-7.5-8.4-2.3-4.6 11.8-7.5 24-9 36.6-.7 5.5 8.1 5.5 8.7-.1z"/></svg>
+ data/ThoughtBubbleTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M375.5 325c20.9-7.4 47.8 3.8 53.9 25.1 7.7-22.4 27.5-40.2 50.6-45.6 23.1-5.4 48.7 1.9 65.5 18.6 22.5-14.2 52.5-15.7 76.3-3.8 23.8 11.9 40.6 36.7 42.8 63.2 10.8-7.1 26.3-1.3 33.6 9.3 7.3 10.6 8.2 24.3 7.2 37.1-1.1 15-4.3 29.9-9.5 44-2.3 6.3-5.2 12.7-10.6 16.6-5.4 3.9-14 4.2-18.1-1.1 4.8 20.9-7.3 44.5-27.1 52.8s-45.1.3-56.6-17.8c-15.3 19.8-35.3 38.1-60.1 41.9-24.7 3.8-53.5-12.6-55.2-37.6 1.4 22.1-56 18.5-66.4 15-32.5-10.8-44.2-37.4-49-69.1-6.4-41.8-33.3-128.7 22.7-148.6zM430 608.6c-12 6.3-15.6 24.4-7 34.8s27.1 10.1 35.5-.5 4.2-28.7-8-34.6c-9.3-4.5-20.8-2.1-29.5 3.6m-33.1 92.8c-14.1-1.3-25.4 17-18.3 29.3 7.1 12.3 28 12.1 35.2-.1 7.3-12.2-1.8-30.3-15.8-32.3" opacity=".7" fill="#ccf"/><path d="M362.2 433.5c-16.3-.9-25.5-17.7-27-32.2-1-9.4.1-19 1.2-28.3 1.1-9.1 2.1-18.7 6-27.1 5.8-12.4 18.1-20 31.2-22.7 14.4-2.9 28.8.8 40.9 8.8 14.5 9.6 24.7 24.4 31.4 40.1 2.3 5.3 10 .7 7.8-4.5-13.7-31.8-43.7-59.5-80.5-53.4-15.5 2.6-30.5 11.6-37.9 25.8-4.8 9.1-6.2 19.3-7.5 29.4-1.4 11.2-2.9 22.5-1.5 33.7 2.4 19.1 15 38.3 35.8 39.4 5.9.3 5.9-8.7.1-9z"/><path d="M434.8 336.4c8-25 33.7-42.7 59.9-40.7 25.9 1.9 47.9 23 52.7 48.1 1.1 5.7 9.8 3.3 8.7-2.4-5.6-29.2-31.7-52.5-61.4-54.7-30.3-2.2-59.5 18.8-68.6 47.3-1.7 5.5 6.9 7.9 8.7 2.4z"/><path d="M541.2 317.5c28.8-16.1 66.2-14.3 92.6 5.9 12.1 9.2 21.7 21.9 27.4 36 2.8 7 4.8 14.4 5.7 21.8.8 6.4 2 16.7-4.2 21-4.7 3.3-.2 11.1 4.5 7.8 11.3-7.8 9.9-23.2 7.8-35.1-2.4-13.8-8.2-27.2-16.4-38.5-17.1-23.6-43.8-37.9-73-38.7-17.1-.5-34.1 3.7-49 12.1-5 2.8-.5 10.5 4.6 7.7zM376.4 422.9c-15.8 2.9-27.4 16-32.2 30.9-5.8 18.4-1.3 38.9 4.8 56.6 5.6 16.4 14.8 31.8 30.6 40 15.1 7.9 33.1 9.2 49.5 4.9 20-5.2 37.1-17.9 51.1-32.7 4-4.2-2.4-10.6-6.4-6.4-20.8 22-50.7 39.6-81.7 29.7-14.9-4.8-25.1-15.8-31.4-29.9-6.6-15-11.5-33-9.9-49.5 1.5-16 11.2-31.9 27.9-35 5.8-.9 3.4-9.6-2.3-8.6z"/><path d="M447.8 549.5c12.2 6.7 22.5 16.3 34 24.1 11.1 7.5 23.4 12.3 36.8 12.9 26.5 1.1 51.7-13.9 62.5-38.2 5.9-13.3 7.5-27.8 4.4-42-1.2-5.7-9.9-3.3-8.7 2.4 6.5 30.2-12.7 60.7-42.8 67.5-15.2 3.4-30.5.4-43.7-7.7-13.2-8.1-24.3-19.2-38-26.7-5-2.9-9.5 4.9-4.5 7.7zm143.9-7.5c21.2 20.1 57 21.2 78.9 1.5 21.4-19.2 24.3-55 6.9-77.7-3.5-4.5-11.3-.1-7.8 4.5 14.7 19.2 13.3 48.9-4.5 65.9-18.1 17.2-49.2 16.4-67.1-.6-4.2-3.9-10.6 2.4-6.4 6.4zm-174 70.1c-10.9 6.1-13.5 20.7-8 31.4 6.3 12.3 21.9 16.7 34.8 15.2 12.9-1.5 25.1-9.9 30.9-21.5 5.6-11.2 3.5-24.4-6.7-32.2-11.9-9.1-28.8-7.3-42.6-5.1-5.7.9-3.3 9.6 2.4 8.7 10.8-1.7 25.3-3.6 34.7 3.5 10.5 7.9 6.3 21.2-1.8 29-9.1 8.8-23.2 11.8-34.8 6.2-5.4-2.5-9.6-7.1-10.5-13.1-.9-5.7 1.1-11.5 6.2-14.4 5-2.8.5-10.5-4.6-7.7zM367 718.2c.3 12.1 9.2 23.1 21.1 25.9 12 2.9 23.6-3.8 28.8-14.7 5-10.5 3-22.8-6-30.4-8.7-7.3-21.5-8.8-31.4-3-5 2.9-.5 10.7 4.5 7.8 13.9-8.1 31.7 5.7 25.1 21-3 7-10.1 12.2-18 10.7-8.2-1.5-14.9-9-15.1-17.4-.2-5.7-9.2-5.7-9 .1z"/><path d="M671.5 359.7c43 28.8 47.3 98.8 9 133.2-4.3 3.9 2.1 10.2 6.4 6.4 33.2-29.8 37.2-83.5 14.5-120.8-6.5-10.6-15.1-19.6-25.4-26.6-4.8-3.2-9.3 4.6-4.5 7.8z"/></svg>
+ data/ToyCubeTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><style>.st1{opacity:.7;fill:#f53625}</style><path d="M407.8 559.9c-.9 28.6.6 57.3 4.3 85.8 1.3 10 3.2 20.6 9.7 28.3 10.2 12 28 13.1 43.7 13.3 19.2.3 38.3.5 57.5.8 18.3.2 39-.5 51.2-14.2 6.5-7.3 9.2-17.1 11.4-26.6 7.5-33.6 8.9-68.5 4.3-102.7-1.6-11.6-5.3-24.9-16.1-29.3-3.3-1.4-7-1.7-10.6-1.9-38.4-3-80.8-9.2-119.2-5.4-31.7 3-35.3 20.6-36.2 51.9z" opacity=".7" fill="#ffcc6e"/><path class="st1" d="M617.2 646.1c.2-1.1.3-2.3.3-3.3.3-26.8-.5-53.6-2.3-80.3.6-13.9.9-27.7.7-41.6-.1-6.3-.4-13-4.1-18-2.8-3.6-6.8-5.7-11.2-6.8-.9-1.5-2.1-2.9-3.6-3.9-5.3-3.6-12.1-3.8-18.5-3.8-6.8 0-34.5-.4-63.8.5-26.8-1.4-54.6-1-77.2 5-12.6-3.4-26.9-2.2-40.3-.7-.9.1-1.7.2-2.6.4-.3-.2-.5-.3-.8-.5-.4.3-.9.6-1.3.9-6.9 1.6-13.7 5-13.5 11.6l3.7 1.6c-5.8 14.5-4.9 34.6-4.8 47.8l.6 68.9c.1 18.3.4 37 4.1 54.8-1 3.4-2.7 6.6-4.9 9.3l7-.8c1.4 4.9 3.1 9.7 5.1 14.4 7 4.6 16.4.9 21.7-5.8 8.5.7 17.1 1.5 25.6 2.2 18.5 4.5 39.5 5.6 60.6 5.2 2.6.2 5.2.5 7.8.7 27.1 2.3 54.6 4.7 81.3-.7 7.7-1.5 15.5-3.9 21.4-9 12.9-11.2 12-30.8 9-48.1zM405 508.7c.7-.1 1.4-.3 2.2-.4-.6.5-1.3 1.1-1.9 1.6l-.3-1.2zM588.8 678c-.1.4-.3.9-.4 1.3-2.1 2-4.3 3.8-6.6 5.5-12.8 2.6-48 5.1-80.9 7.2-28.9-.3-57.9.5-85.4-4.9 2-8.5.3-17.7-1.2-26.4-7.6-42.4-10.4-85.6-8.3-128.6.3-7.3.8-14.7-.6-21.9 18.1 2.3 36.5 1.1 55-1.2 34.4 2.3 95.3-.8 125.2-.9 2.6 3.8 3.5 9 4.2 13.7 7.7 52 15.3 106.2-1 156.2z"/><path class="st1" d="M473.2 569.3c-14.8.9-29.2 6.9-40.3 16.8-1.6 1.4-3.2 3.1-3.3 5.2-.2 3.5 3.7 5.6 7 6.8 5.6 2.1 11.3 4.2 17 6.3 1.5.6 3.1 1.2 4.1 2.4 1 1.2 1.3 2.8 1.4 4.3.5 7.5-3.4 14.6-4.6 22.1-1.2 7.5 2.1 17.1 9.6 17.7 3.6.3 7-1.6 10.1-3.6 9.2-5.8 17.9-12.4 26-19.6 7.6 7.7 17.5 13.2 28.1 15.5 4.7 1 9.7 1.4 14-.8 7-3.7 8.9-13.3 6.2-20.7-2.6-7.4-8.6-13.1-14.4-18.3 6.2-3 12.6-6.1 16.7-11.5s5.2-13.9.5-18.8c-7.6-7.9-22.5-1.2-31.1-8.2-2.2-1.8-3.7-4.3-5.2-6.6-3.9-5.9-17.2-24.8-25.5-23.3-9.9 1.5-15.4 26.6-16.3 34.3z"/><path d="M410.2 486.1c57.7-4.4 115.3-11.3 173.1-10.3 7 .1 14.3.3 20.7-2.6 6.4-2.9 11.6-9.9 9.9-16.7-68.9-12.2-167.2-41.6-214.1 25.2 2.2 4.2 5.7 4.8 10.4 4.4z" opacity=".7" fill="#ffe1ab"/><path d="M645 583.8c-3.8-39-7.3-79.2-15.8-117.5-37.1 13-11.5 62.4-8 89.9 2.4 18.7 8.5 107.6-3.6 125.4 4.9-7.2 23.8-27 27.2-44.5 3.3-17.4 1.9-35.5.2-53.3z" opacity=".7" fill="#998765"/><path d="M404 511.9c-4.5 9.5-5.4 19.8-5.2 30.3.2 11.8 1 23.7 1.6 35.5 1.4 24.2 3.3 48.3 5.7 72.4.4 4.4 6.3 4.3 6.8 0 .1-1 .2-2.1.3-3.2.5-4.3-6.3-4.3-6.8 0-.1 1-.2 2.1-.3 3.2h6.8c-2.3-23.1-4.1-46.2-5.5-69.4-.7-11.3-1.2-22.6-1.7-33.8-.4-10.6-.5-21.6 4.1-31.4 1.9-4.1-4-7.5-5.8-3.6z"/><path d="M409.8 516.3c42-3.1 84.1-4.6 126.2-4.5 10.4 0 20.8.1 31.2.4 3.8.1 8 .1 11.4 1.9 3.9 2.1 5.2 6.3 6 10.4 1.7 9.8 2.1 20.1 2.7 30 .7 10.3 1 20.7 1.1 31.1.2 23.7-1 47.4-3.6 70.9-.5 4.3 6.3 4.3 6.8 0 4.8-43.3 5.6-87.9-.1-131.2-1.1-8-4.1-15.4-12.3-18.3-3.7-1.3-7.7-1.5-11.5-1.6l-16.9-.3c-22.3-.2-44.6 0-66.9.6-24.8.7-49.5 2-74.2 3.8-4.3.4-4.3 7.2.1 6.8zm2.1 145.3c-.8 5.1-1.4 10.7.8 15.6 2.4 5.5 7.4 7.2 13 8 15.1 2.1 30.3 4.1 45.5 5.6 30 3 60.7 4 90.5-1.3 12.8-2.3 28.2-9.4 27.4-24.8-.2-4.3-7-4.4-6.8 0 .7 12.7-13.8 16.8-23.7 18.5-12.7 2.1-25.5 3.1-38.3 3.2-25.8.4-51.4-2.4-76.9-5.7-3.8-.5-7.7-1-11.5-1.5-3.1-.4-6.9-.4-9.8-1.6-5.3-2.2-4.4-9.5-3.6-14.2.6-4.3-5.9-6.1-6.6-1.8zm-29-168.3c-4.5.7-6.5 5.2-7 9.2-.9 6.4-.8 13-1.1 19.5-.5 14-.7 28-.4 42 .5 27.8 2.4 55.5 5.8 83 .9 7.4 1.9 14.7 3 22.1.6 3.9 1.2 7.8 1.9 11.6.3 1.9.7 3.9 1 5.8.1.7.2 1.5.4 2.2-.1-.2 1.2 3.5.7 3.1 3.4 2.6 8.2-2.1 4.8-4.8-3.8-2.9-9.8-1.2-10.4 4-.5 5.1 5.4 7.3 9.3 4.8 2-1.3 2.8-3.3 2.6-5.6-.3-4-1.4-8.1-2.1-12.1-1.4-8.4-2.7-16.9-3.8-25.3-4.4-33.4-6.6-67-6.6-100.7 0-9.3.1-18.7.5-28 .2-4.7.4-9.3.6-14 .1-2.2-.6-10 2.6-10.4 4.3-.5 2.4-7.1-1.8-6.4z"/><path d="M383.5 495.2c45.9-5.2 92-8.6 138.1-10.1 11.9-.4 23.8-.6 35.7-.8 11.2-.1 22.5-.5 33.6 0 4.6.2 9 1.2 12.2 4.8 2.9 3.2 4.3 7.4 5.4 11.5 2.5 10.1 3.4 20.8 4.3 31.2 4.2 45.4 1.7 91.1-1 136.5-.6 10-2 20-10.2 26.8-6.5 5.4-15 7.8-23.1 9.3-21.1 3.8-43.2 2.8-64.5 1.3-25-1.8-50-5.1-75-6.1-6.2-.2-12.5-.4-18.8-.3-6 .1-12.1.7-18.1.4-5.2-.2-10.9-1.3-14.5-5.4-2.7-3.1-4.7-8.3-1.9-11.9 2.6-3.4-2.1-8.2-4.8-4.8-5.2 6.7-3.6 15.4 1.9 21.5 6.8 7.4 17.7 7.7 27 7.3 24.5-1 48.8 1 73.2 3.3 24.2 2.3 48.4 4.7 72.7 3.7 18-.8 41.2-2 54-16.8 6.9-8 8.3-18.2 8.9-28.3.7-12.2 1.4-24.4 1.9-36.6 1.2-25 1.8-50 .7-75-.5-12.2-1.4-24.4-2.9-36.6-1.2-9.9-1.9-20.5-6.3-29.6-4.4-9.2-12.6-12.7-22.5-13-12.2-.4-24.6-.1-36.8.1-50.4.7-100.7 3.6-150.9 8.8-6.2.6-12.3 1.3-18.5 2-4 .6-4.1 7.3.2 6.8z"/><path d="M411.6 492.9c-.8-2.1-2.5-3.5-4.8-3.6-1.9-.1-3.8.9-4.8 2.5-.9 1.5-.4 3.8 1.2 4.6 1.6.9 3.7.4 4.6-1.2.3-.5-.6.6-.2.2 0 0-.7.5-.3.3-.6.2-.7.3-.5.2.3-.1.1 0-.5.1h.4c.3 0-.9-.1-.4 0s-.7-.3-.4-.1-.6-.6-.3-.2c-.1-.2-.2-.3-.4-.5.2.3.1.1-.2-.4.6 1.7 2.3 3 4.2 2.4 1.7-.7 3-2.5 2.4-4.3zm199.1-7.3c7.7-8.5 15.5-17.1 23.2-25.6 2.9-3.2-1.9-8-4.8-4.8-7.7 8.5-15.5 17.1-23.2 25.6-2.9 3.2 1.9 8 4.8 4.8zm-219.9 7.9c14.9-21.1 37-36.5 61.9-43.4 4.2-1.2 2.4-7.7-1.8-6.5-26.6 7.4-50 23.9-65.9 46.5-2.5 3.5 3.3 6.9 5.8 3.4z"/><path d="M444.6 453.3c25.4-6 51.9-7.4 77.9-8.8 24.4-1.3 49.1-1.6 73.3 2.7 13.5 2.4 26.7 6.2 39.2 11.9 3.9 1.8 7.4-4 3.4-5.9C591.7 432 538.7 436 489 440.1c-15.5 1.3-31 3.1-46.1 6.7-4.3 1-2.5 7.5 1.7 6.5z"/><path d="M625 458.2c8 15 11.3 31.8 13.2 48.6 2.1 18.2 3.4 36.5 4.5 54.7 2 33 5.3 69.8-10.9 100.1-7.7 14.3-19.5 26.7-35 32.4-4.1 1.5-2.3 8 1.8 6.5 30.6-11.2 46.5-42.6 50.7-73.2 2.6-18.9 1.7-38 .7-56.9-1-19.5-2.5-38.9-4.5-58.3-2-19.7-5.2-39.6-14.7-57.2-2.1-4-7.9-.5-5.8 3.3z"/><path d="M633.9 511.4c-4 11.7-8 23.5-12 35.2-1.4 4.1 5.1 5.9 6.5 1.8 4-11.7 8-23.5 12-35.2 1.4-4.1-5.1-5.9-6.5-1.8zm1.2 54.6c-2.5 7.1-4.9 14.2-7.3 21.3-1.4 4.1 5.1 5.9 6.5 1.8 2.5-7.1 4.9-14.2 7.3-21.3 1.5-4.2-5.1-6-6.5-1.8zm-1.9 34.3c-.9 3.5-1.8 7.1-2.6 10.6-1 4.2 5.5 6 6.5 1.8.9-3.5 1.8-7.1 2.6-10.6 1-4.3-5.5-6.1-6.5-1.8zm-165.6-35.4c0 .2-.1.3-.2.5l2.4-2.4c-.2 0-.4.1-.6.2.9.1 1.7.2 2.6.3-.2-.1-.4-.2-.5-.2.5.7 1 1.3 1.6 2-.5-1.8 2.2-6.9 3-8.7 1.2-2.7 2.7-5.3 4.3-7.8 3-4.7 8.1-11.9 14.4-12 6.2 0 10.2 7.9 12.9 12.4 3.6 6.1 6.6 12.5 8.9 19.1 1.4 4.1 8 2.3 6.5-1.8-3.4-9.7-8-19.3-14.1-27.7-5.4-7.4-13.5-11.5-22.2-6.5-8 4.7-13.7 14.1-17.3 22.5-1.4 3.2-4.6 9-2.8 12.5 1.8 3.5 6.4 2.7 7.6-.8 1.4-3.9-5.1-5.7-6.5-1.6z"/><path d="M468.5 564.1c-8.8 1.8-17.2 4.4-25.5 7.9-6.7 2.8-14.1 6.4-16.9 13.7-2.5 6.6 0 13.3 6.3 16.6 7.8 4 16.8 6.4 25 9.3 4.1 1.5 5.9-5 1.8-6.5-6.7-2.4-13.4-4.8-20.1-7.3-2.4-.9-5.5-1.9-6.7-4.4-1.3-2.7.1-6.1 1.9-8.2 3.9-4.6 10.7-6.8 16.1-8.8 6.5-2.4 13.1-4.3 19.9-5.6 4.3-1 2.5-7.5-1.8-6.7z"/><path d="M456.4 606.5c-3.9 8.1-6 16.9-6 25.9 0 6.7 1 15.3 7.4 19.2 6.6 4 16.5-.6 22.8-3.2 8.2-3.4 15.6-8 22.4-13.7 3.4-2.8-1.5-7.6-4.8-4.8-5.2 4.4-11 8-17.2 10.9-3.1 1.5-6.4 2.7-9.7 3.7-2.6.8-6.6 2.5-9.3 1.6-5.1-1.8-4.9-10.9-4.8-15 .1-7.3 1.9-14.5 5-21.2 1.9-3.9-4-7.3-5.8-3.4z"/><path d="M500.3 633.3c6.1 5.8 12.8 11.5 20.8 14.4 8.4 3.1 16.7 1.4 24-3.5 3-2 6-4.4 7.6-7.7 1.8-3.8 1.1-7.9 0-11.8-2.5-8.7-7-16.5-12.8-23.3-2.8-3.3-7.6 1.5-4.8 4.8 4.3 5.1 7.8 11 10.1 17.3 1.1 3.2 2.9 7.4 1.2 10.6-1.3 2.6-4.5 4.3-6.8 5.8-13 7.6-25.2-2.6-34.4-11.3-3.3-3.1-8.1 1.7-4.9 4.7z"/><path d="M520.5 570.1c9.2-3.6 20.1-1.8 27.2 5.3 2 2 4.1 4.4 4.3 7.3.3 3-1.7 5-3.9 6.7-5 3.9-10.8 7.1-16.2 10.6-3.7 2.4-.3 8.2 3.4 5.8 3.9-2.5 7.8-5 11.6-7.5 3-1.9 6.2-3.8 8.5-6.5 5.1-5.8 3.7-13.1-.9-18.8-8.3-10.4-23.6-14.2-35.9-9.4-3.9 1.6-2.2 8.1 1.9 6.5zm-95-18.3c4-.7 7.9-1.5 11.9-2.2 4.3-.8 2.5-7.3-1.8-6.5-4 .7-7.9 1.5-11.9 2.2-4.2.7-2.4 7.3 1.8 6.5zm128.9-7.4c12.5 3.2 25.6 2.5 37.6-2.2 4-1.6 2.3-8.1-1.8-6.5-10.9 4.3-22.6 5.1-34 2.2-4.2-1.1-6 5.4-1.8 6.5zm62.3 82.1c-3.2 1.5-6.4 3.1-9.6 4.6-3.9 1.9-.5 7.7 3.4 5.8 3.2-1.5 6.4-3.1 9.6-4.6 3.9-1.8.5-7.6-3.4-5.8zM466.1 471.7c4.4 0 4.4-6.8 0-6.8s-4.4 6.8 0 6.8zm50-11.2c4.4 0 4.4-6.8 0-6.8-4.3 0-4.3 6.8 0 6.8zm50.2-16.9c-2.4 3.1-4.8 6.3-7.3 9.4-1.1 1.4-1.4 3.4 0 4.8 1.2 1.2 3.7 1.5 4.8 0 2.4-3.1 4.8-6.3 7.3-9.4 1.1-1.4 1.4-3.4 0-4.8-1.2-1.1-3.7-1.4-4.8 0z"/></svg>
+ data/TreeTransparency70.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000"><path d="M922 392.6c-.9-24.5-22.9-42.4-46.8-37.4 6-17.9-2.7-31.6-25.6-46.2-15.9-10.1-47.2-6.3-63.8 2.7 12.8-10.4 16.4-30.6 7.8-44.8-8.5-14.1-22.7-35.8-37.9-29.3 11.1-16.1 11.6-29.5-1.2-44.4s-42.9-14.5-60.5-6c14.4-30.7 2.3-71.4-26.6-89.2-27.9-17.2-67.8-10.9-89.4 13.6 7.8-11.9-5.4-31.1-20.8-32-16.6-.9-31 10.7-43.5 21.7-25.3-32.8-71.1-48.3-111.2-37.7-40.1 10.7-72.2 46.9-77.9 88-24.8-21.9-71.2-6.1-77.5 26.3-17.9-5.5-39.3 5-45.7 22.6s3 39.5 20.3 46.8c-23.3 10.1-47.3 20.5-65 38.7-17.7 18.2-27.9 46.1-18.2 69.5 4.8 11.6 14.3 21.8 14.5 34.4.3 12.9-9.2 23.8-18.6 32.7-9.4 8.9-19.7 18.3-22.1 31-2.4 12.7 9 28.2 21.3 24-8.7 8.5-4.7 24.3 4.9 31.8-7.7 2.6-15.3 6.9-17.7 14.5-2.8 8.8 3.2 18.7 11.6 22.7 8.3 4 18.2 3.5 27.2 1.5 17.7-3.8 34.1-12.8 47.1-25.3l55.5 5.4c21.6 2.1 48.3 1.8 59-17.1 5.9 30.6 48.9 41.3 75.8 25.3 17.6-10.5 29.1-27.7 37-47l-3.8 12.1c5.2-7.7 7.8-16 8.2-24.1 2.1-6.3 3.9-12.8 5.4-19.1l-5.3 16.9c0-18.7-12.2-35.7-33.5-39.2 14.4-15.4 25.5-35.1 39.6-51.1 9.7 7.6 23.2 10.3 35.1 6.7 13-4 23.5-15.4 26.3-28.7 1.8 16.8 24.6 22 41 17.6s32.7-13.8 49.2-9.8c5.9 1.5 11.2 4.6 16.3 8.2 1 1.7 2 3.4 2.9 5.2 4.4 8.9 6.5 18.9 6.3 28.9-3.1 7.7-7.8 14.7-14.1 20.2-6.6 5.9-14.7 10-21.1 16-6.2 5.8-11.1 14.2-9.5 22.5-.4.3-.7.6-1.1.9-5.7 5.2-8.9 14.6-4.1 20.6 5.9 7.5 17.7 4.1 26.3.2 5.5-2.5 10.2-4.7 14.6-6.8 1.9-.4 3.8-1 5.7-1.5 11.7-3.5 23.1-8.6 32.9-15.8-6.2 19.8-1.7 44.1 16.3 54.3 18.3 10.4 60 .6 73.8-15.3 7.5-8.7 12.2-20.6 22.7-25.3 22.5-10 34.7 30.3 58.8 35.4 14.4 3.1 31.5-18.8 43.5-27.2 26.6-18.7 22.6-33.7 10.8-42.5 24.4 3.1 45.7-31.7 44.8-56.1z" opacity=".7" fill="#4fab2b"/><path d="M657.5 528.2c-4.2-.8-8.3 1.6-11.9 3.9-23.8 15.2-47.7 30.5-71.5 45.7l-2.4 1.5c-6.2 2.2-12.9 4.5-19.2 6.4-2.1-.1-4.2-.7-6.2-1.7-9.5-5.1-10.1-18.3-8.8-29 7.2-56.6 34.6-110.5 76.3-149.5-12.2-3.3-23.1-11.2-30-21.8-22.4 20.1-44.8 40.2-67.2 60.2l3.4-63.8c-11.2 2.8-23.9-1.8-30.8-11.1-6.9 14.8-22.1 25.5-38.4 26.8 14.5 19.9-1.7 53.3-26.3 54.3 17.7 22.5 17.5 57.4-.6 79.7 35.3 71.6 29.8 155.7 23.6 235.3-.9 32.6-5.8 68.7-21.1 97.8-5.8 11.1-27 33.9-26 50.7 34.7-14.6 79.7-21.6 93.6-6 .4.4.7.8 1 1.2 18.6-4.2 37.3-7.5 56.4-9.3 28.6-2.7 57.2.3 85.1 7.2 7.4 1.8 13.2 6.5 16.9 12.5.7-1.2 1.3-2.5 1.7-3.9 3.9-11.9-5-24.7-15.8-31-10.8-6.3-23.6-8.4-35.1-13.5-23.7-10.3-40.5-32.5-50-56.5s-8.2-59.5-11.2-85.2c-4.7-39.2-12.9-72.9 9.5-105.4 5.8-8.5 12.9-15.5 20.9-21.7 16-3.4 30.5-11.8 44.6-20.1 9.1-5.4 19.2-11.2 25.2-19.8 2.8-1.6 5.5-3.3 8.2-5.1 5.3-3.5 10.7-7.6 12.8-13.5s-.5-14.1-6.7-15.3z" opacity=".7" fill="#b38752"/><path d="M606.1 334.9c.2 14.5 10.4 28.3 24.2 32.6s30.1-1.2 38.5-13c1.4 22.8 18.1 43.9 40 50.5-4.6 12.4-18.9 20.3-31.9 17.5-12.9-2.8-22.8-15.9-21.8-29.1-10.6 10-27.2 13-40.7 7.3s-22.8-19.9-22.8-34.4c.1 18.6-101.7 26-94.5-8.6 5.7-27.2 88.8-9.1 109-22.8zm44.4 128.9c8.5 1.9 9.8 13.3 15.2 20.1 8.9 11.4 27.1 8.2 39.9 1.5 12.9-6.7 26.2-16 40.4-13.2 5.8 11.2 2.6 26.4-7.3 34.3-9.9 7.9-25.3 7.8-35-.3.2 11.9-11.8 21.6-23.7 21.5-11.9-.2-22.6-8.3-28.7-18.5s-8.3-22.2-9.5-34c-18.5 16.7-45.7 23.1-69.7 16.4-8.7-2.5 8.5-41.5 22.3-40.4 6.1.5 12.4 17.8 20 20.1 15.2 4.6 23.1-10.5 36.1-7.5zm-226.3 9.5c-5-6.9-14.9-12.7-21.8-7.5-4.9 3.7-5.2 10.6-6.4 16.6-4.1 19.7-23.5 34.7-43.7 32.5-20-2.2-20.5-16.3-35.3-24.4-14.9-8.1-34.6-9.3-52-7.8 5.6-6.2 6-16.3 2.7-24.2-3.7-8.8-11-15.5-18-21.9-13.5-12.2-30.5 38.2-53.6 43.1-18.4-26.6-51.5 29-51.9 47-1 46.5 40.1 6.1 70.5-19.2 12.7 4.4 24.4 11.9 35.9 18.8 15.3 9.2 32.1 18 50 17.2 17.9-.8 36.3-14.6 35.7-32.5 5.4 28.8 40.6 47.7 67.5 36.1 27-11.5 37.6-50.1 20.4-73.8z" opacity=".7" fill="#307814"/><path d="M405.5 531.9c33.1 14 35.4 55.5 36.6 86.2 1.5 37.7 2.9 75.4 1.7 113.1-.7 21.5-2.3 43.1-5.1 64.5-.5 3.8 5.4 3.9 5.9.2 5.3-40.3 6.1-80.9 5.2-121.5-.4-20-1.2-39.9-2-59.8-.7-18-1.6-36.4-8.4-53.3-6.1-15.2-16.9-28.4-32.2-34.9-3.5-1.6-5.2 4-1.7 5.5zm34.1 294.7c-21 46.8-67 80.3-117.9 86.5-3.8.5-2.3 6.2 1.4 5.7 53-6.4 100.3-41.9 122.1-90.5 1.6-3.4-4.1-5.1-5.6-1.7zM551 621.9c-6.3 15.1-7.1 31.5-7 47.7.1 17.6.7 35.2 1.6 52.8 1.8 35.3 5.1 70.6 9.8 105.7.5 3.8 6.2 2.3 5.7-1.4-4.6-34.6-7.8-69.3-9.6-104.1-.9-17-1.4-34-1.6-51.1-.2-16.3.4-32.7 6.7-48 1.5-3.4-4.2-5.1-5.6-1.6z"/><path d="M547.4 783.1c12.9 30.6 30.3 59.1 51.6 84.6 2.4 2.9 6.7-1.2 4.3-4.1-21-25.1-38-53.2-50.7-83.4-1.5-3.4-6.6-.6-5.2 2.9zm49.6 94.3c10-2.5 20.9-5.2 31.1-2.7 8.3 2.1 14.3 7.9 19.2 14.7 8.3 11.5 14.4 25.6 27.8 32.2 3.4 1.7 6.5-3.3 3.1-5-14.9-7.3-20.1-24.7-30.7-36.4-14-15.5-33.4-13.1-51.9-8.5-3.7.9-2.3 6.6 1.4 5.7zm-44.2-263.2c1.6-3.7-3-5.8-5.9-4.3-3.8 1.9-2.5 6.6 1 8 4.9 2 12.6-1.2 17.4-2.4 6.8-1.8 13.6-3.9 20.2-6.4 25.5-9.7 49.1-24.3 69-43.1 11.2-10.6 21.2-22.4 29.8-35.2 2.1-3.2-2.9-6.3-5-3.1-14.8 22.1-33.9 41.1-56.1 55.7-10.8 7.1-22.2 13.2-34.1 18.1-6.3 2.6-12.8 4.9-19.3 6.8-2.9.8-5.8 1.6-8.8 2.4-1.7.4-13.9 2.4-13.8 2-1.5 3.3 4.1 4.9 5.6 1.5zm.5-34.1c37.1-5.7 71-25.5 94.6-54.7 2.4-3-2.7-6-5-3.1-22.6 28-55.5 46.6-91 52-3.7.6-2.3 6.3 1.4 5.8zm5.2-111.9c-9.2 17.7 3.1 37.7 20.8 43.4 23.1 7.6 45.8-5.2 64.9-16.9 3.2-2 .4-7.2-2.8-5.2-16.1 9.8-33.9 20.6-53.6 18-8.7-1.1-17.1-5.3-22.1-12.7-4.6-6.9-6.1-15.9-2.2-23.5 1.8-3.4-3.2-6.5-5-3.1z"/><path d="M638 480c-4.7 15.7.3 33.5 13.1 44 13 10.6 31.9 11.8 46.4 3.7 3.3-1.8.5-7-2.8-5.2-12.6 7-29.2 6.1-40.4-3.5-10.5-9.1-14.6-24.1-10.6-37.3 1-3.6-4.7-5.3-5.7-1.7zm61.5 39.9c12.8 8.5 29.6 10 43.5 3.2 13.1-6.4 21.7-19.2 23.8-33.4.6-3.8-5.3-3.9-5.9-.2-4.1 27.3-35.6 40.4-58.3 25.3-3.2-2.1-6.3 3-3.1 5.1zM441.9 483c-6.3 24.8-23.4 48.9-48.8 56.6-22.8 6.9-50.4-1.2-62.5-22.5-1.9-3.3-7-.5-5.2 2.8 13.1 23.1 42.8 32.7 67.8 25.7 28-7.8 47.4-33.7 54.3-61 1-3.6-4.7-5.3-5.6-1.6z"/><path d="M331.5 516.5c-8.6 19.1-29.7 30.5-50.4 28.2-3.8-.4-3.9 5.5-.2 5.9 23.5 2.6 46.5-11 56.1-32.3 1.8-3.6-3.9-5.3-5.5-1.8zm-53.7 6.1c-13.7 7-28.8 10.3-44.2 9.7-3.8-.1-3.9 5.8-.2 5.9 16.4.6 32.5-3 47.2-10.5 3.4-1.7.6-6.9-2.8-5.1z"/><path d="M228.1 531.6c-15.8-1.2-28.7 8.6-42.2 15.3-15.1 7.5-33.2 12.9-49.9 7.5-13-4.2-26.1-15.7-26-30.4.1-13.3 12.5-27.4 26.5-24.5.6-1.9 1.1-3.8 1.7-5.6-24.9-5.1-38.8-32.6-26.6-55.4 9.7-18.1 33.7-23.4 40.5-43.7 1.2-3.6-4.4-5.3-5.6-1.7-3.8 11.3-14.5 17.8-23.5 24.8-9.6 7.4-17.5 16-20.5 28.1-5.9 24.2 9.6 48.7 34 53.6 3.7.8 5.4-4.9 1.7-5.6-11.2-2.3-21.5 3-28.1 12.1-7.1 9.8-7.8 22.3-2.2 33 13.6 26.1 46.6 27.1 70.8 17.6 15.9-6.2 31.4-20.3 49.2-19 3.8.1 4-5.9.2-6.1zM143.7 369c-9.8-13.4-21-28.9-20.7-46.2.2-15.1 9.7-27.5 21.3-36.4 24.9-19.1 58.4-21.4 83.3-40.6 2-1.6.5-5.2-1.9-5.1-10.2.3-22.2.2-30.8-6-12.3-8.8-7.4-25-1-35.9 12.4-20.9 35.4-34.6 59.6-35.7 1.2-.1 2.6-.8 2.9-2.1 6.2-25.6 37.9-24.6 58.4-22.8 3.8.3 3.9-5.6.2-5.9-14.1-1.2-28.9-2.4-42.3 3.2-10.4 4.3-19.2 12.7-21.9 23.8 1-.7 1.9-1.4 2.9-2.1-28.1 1.3-55.2 18-67.6 43.6-5.9 12.2-7.8 27.6 3.6 37.3 9.6 8.1 23.8 8.8 35.8 8.4-.6-1.7-1.3-3.4-1.9-5.1-21.8 16.8-50.2 20.1-73.5 33.9-20.4 12.1-37 32.4-31.9 57.5 3.1 15.1 12.4 28 21.4 40.2 2.1 3.1 6.3-1 4.1-4zM340 170.4c-9.9-18.8-9.6-41.3-1.5-60.7 7.9-18.7 23.1-33.6 40.5-43.5 32.5-18.6 84.4-24.1 108.1 11.4 10.6 15.9 13.5 37.5 2.4 53.9-2.1 3.2 2.9 6.2 5 3.1 10.6-15.7 9.9-35.8 2-52.4-9-18.9-26.9-31.1-47.2-35-42.5-8.2-92 14.7-112.7 52.9-12.2 22.4-13.8 50.3-1.8 73.1 1.7 3.4 6.9.6 5.2-2.8z"/><path d="M506.9 98.6c7.9-19 29.5-25.5 48.4-25.8 5-.1 10.1.2 15.1.6 4.5.4 9.9 1 11.5 5.9 2.3 7.2-3.4 16-7.4 21.4-1.1 1.5-.1 3.9 1.7 4.4 6.4 1.8 12.1-.1 18-2.7 6.4-2.8 12.6-5.3 19.5-6.6 13.5-2.5 27.9-.8 40.5 4.6 25 10.8 41.1 37 40.9 64 0 3.8 5.9 4 5.9.2.2-27.2-14.6-53.8-38.7-66.8-12.3-6.7-26.7-9.8-40.7-8.9-7 .4-14 1.8-20.6 4.2-7.2 2.6-15.1 8.5-23.1 6.3.5 1.5 1.1 2.9 1.7 4.4 5.2-7 10.6-17 8.2-26-3.1-11.4-17.5-10.7-26.8-11-23.4-.6-49.7 6.3-59.5 30-1.7 3.5 3.9 5.2 5.4 1.8zM697 180.8c23.7-3.7 51.5-4.9 69.8 13.5 7.2 7.3 11.5 16.9 10.4 27.3-1 9.9-6.6 18.8-15.9 22.8-3.2 1.3-1 6.1 2.1 5.4 12.7-2.8 28.5-.8 36.9 10.4 6.9 9.3 6.4 24.8-4 31.3-3.2 2-.4 7.2 2.8 5.2 12.6-7.9 14.9-25.7 7.2-38-9.1-14.7-28.6-18.1-44.4-14.6l2.1 5.4c10.3-4.4 16.8-14.3 18.6-25.1 1.9-11.3-1.6-22.3-8.8-31.1-19-23.2-51.4-22.5-78.4-18.3-3.6.7-2.2 6.4 1.6 5.8zm106.5 131.3c19.2-22.3 51.7-13.4 71 3.8 9.4 8.4 17.2 19.5 19 32.3 1.6 11.9-2.5 24.3-12 31.9-3 2.4 1.1 6.6 4.1 4.3 10.6-8.4 15.2-22.2 13.9-35.4-1.4-14.5-10-27.5-20.7-37.1-21.5-19.2-57.9-28.9-79.4-4-2.4 2.7 1.7 7.1 4.1 4.2z"/><path d="M882.7 374.7c-3-.6 2-6.2 2.8-6.9 2.5-2.1 5.5-3.6 8.7-4.6 6-1.8 12.6-1.7 18.5.4 14.5 5.1 19.2 20.4 17.7 34.5-2.8 26.9-25.2 55-53.6 56.1l2.4 4.5c3.2-5.9 12.1-3.5 14.8 1.6 4.2 7.9-1.2 18-5.9 24.3-9.4 12.7-23.8 20.8-39.3 23-3.8.5-2.3 6.2 1.4 5.7 20.7-2.9 41.8-16.9 49.2-37.1 3.1-8.4 2.7-19.4-5.7-24.5-6.4-3.9-15.8-3.3-19.5 3.8-1 1.8 0 4.6 2.4 4.5 28.8-1 51.7-26.2 58.2-53 3.2-13.5 2.6-28.8-6.7-39.9-8.1-9.7-22.2-13.1-34.2-10-5.9 1.5-12.9 4.9-16.1 10.3-2.5 4.2-3 11.6 3.1 12.9 3.7.8 5.5-4.9 1.8-5.6zm-89.4 117.9c-2.3 9.4.6 19.8 8.4 25.9 8.3 6.5 20.1 6.6 28.8.9 3.2-2.1.3-7.3-2.8-5.2-14.3 9.4-33-2.9-28.8-19.9.9-3.7-4.7-5.4-5.6-1.7zM487.4 351.9c1.2 20.7 19 35.6 38.3 40.1 25.6 5.9 51.3-6.4 73.8-17.2 3.4-1.7.6-6.8-2.8-5.2-20.2 9.8-43.4 21.3-66.6 17.3-17.4-3-35.6-15.9-36.7-34.8-.4-3.8-6.3-4-6-.2z"/><path d="M593.2 362.7c-3 13 .8 27.2 10.8 36.2 10 9 24.4 11.8 37 7.5 3.6-1.2 2.2-7-1.4-5.7-23 7.8-46.3-12.1-40.8-36.2.9-3.8-4.8-5.5-5.6-1.8z"/><path d="M645.2 383.6c-4.6 11.5-2 25.5 7.2 34s22.4 10.3 33.8 5.5c3.5-1.5.6-6.6-2.8-5.2-9.2 3.9-20.7 1.9-27.7-5.4-7-7.2-8.5-18-4.8-27.2 1.4-3.5-4.3-5.2-5.7-1.7zm-99.7 196.5c-4.8-53 15-107 51.9-145.2 10.5-10.9 22.2-20.4 35.1-28.2 3.2-2 .4-7.2-2.8-5.2-46.7 28.6-79.2 78.1-88.2 131.9-2.6 15.4-3.2 31-1.8 46.6.2 3.7 6.1 3.9 5.8.1zm-24.3-182.5c-3.9 14-6.1 28.4-6.4 43-.1 3.8 5.8 4 5.9.2.3-14.1 2.4-27.9 6.1-41.4 1-3.7-4.6-5.5-5.6-1.8zm5.3 44.9c18.5-21.8 40.1-40.9 64.1-56.5 3.2-2.1.3-7.2-2.8-5.2-24.4 15.9-46.4 35.2-65.3 57.4-2.5 2.9 1.6 7.2 4 4.3zm-215.3-46.3c5.6 27.6 18.2 59.1 50.4 62 34.3 3.1 58.9-24.8 74.8-51.4 2-3.3-3.1-6.4-5-3.1-14.6 24.5-36.5 50.7-68.1 48.8-30.1-1.8-41.3-32.4-46.4-57.7-.7-3.8-6.4-2.3-5.7 1.4zm92.4-22.1c14.7 19.7 42.6 23.8 64.2 14.2 21.7-9.6 39.2-32 42.6-55.6 1.8-12.4-.8-25.4-10.2-34.1-2.8-2.6-7.1 1.5-4.3 4.1 21.3 19.7 2.9 54.4-14.4 69.8-10.5 9.3-23.9 15.5-38.1 15.2-13.9-.3-27.2-6.2-35.6-17.5-2.2-3.2-6.5.9-4.2 3.9z"/><path d="M411 438.1c9.7 2.7 21.5 19.7 32 8.4 4.2-4.6 5.3-12.5 6.8-18.3 2.2-8.3 3.9-16.8 5.3-25.3.6-3.7-5-5.5-5.6-1.7-2 12.5-4.5 25.4-8.8 37.3-2.9 7.9-9.7 5.8-15.1 1.8-4.2-3.1-7.8-6.4-12.9-7.8-3.6-1.1-5.3 4.6-1.7 5.6zm148.1-260.4c-2.1-9.2 1.3-19.2 8.9-24.9.7-.5 1.9-1.6 2.8-1.7 1.9-.2 2.5 1.3 3.1 3.2.8 2.4.8 5.2.7 7.7-.2 5.6-2.1 10.6-5.1 15.3-2.1 3.2 2.9 6.3 5 3.1 4.5-6.8 6.7-14.8 5.9-22.9-.5-5.6-2.6-14.3-10.1-12.5-6.2 1.5-11.5 7.9-14.3 13.3-3.3 6.5-4.2 13.8-2.6 20.9.8 3.6 6.5 2.2 5.7-1.5zm36.4 9.4c7.1-4.7 15.2-6.1 23.4-3.8-.7-1.2-1.3-2.5-2-3.7-3.4 7.9-10 13.8-18.3 16.3-3.6 1.1-2.2 6.8 1.4 5.7 10.4-3.1 18.3-10.4 22.5-20.3.6-1.4-.5-3.3-2-3.7-9.6-2.7-19.6-1.2-28 4.3-3 2.1-.1 7.3 3 5.2zm-37.3 49.5c-2.5-4.1-5.7-12.2-1.1-16.1 2.2-1.8 9.3-1.3 8.5 2.7-.8 3.7 4.8 5.4 5.7 1.7 1.8-8.4-7.8-13.4-14.9-10.7-10.4 4-7.8 17.9-3.3 25.2 1.9 3.2 7.1.4 5.1-2.8zm179 122.2c4.8-15.2 24.2-23.1 38.2-15.4-.3-1.4-.6-2.7-1-4.1-3.8 8-9.2 14.8-16.3 19.9-3 2.2-.2 7.4 2.8 5.2 8-5.8 14.3-13.1 18.5-22 .7-1.4.6-3.2-1-4.1-17.3-9.6-41-.3-47 18.6-1 3.8 4.7 5.5 5.8 1.9zM706.6 328c-7.2-9.8 3.3-23.9 12.1-28.9 4.7-2.6 10.8-3.6 14.8.6 3.1 3.2 4.6 8.5.8 11.7-2.9 2.5 1.2 6.7 4.1 4.3 5-4.3 5.1-11.3 1.9-16.8-3.8-6.6-11-9.2-18.3-7.4-14.4 3.5-30.8 25.2-20.5 39.4 2.1 3 7.3.2 5.1-2.9zm23.2 86c-2.5 12.9 12.8 20.6 22.9 13.6 13.3-9.3 8.9-26.8 3.1-39-1.6-3.4-6.8-.6-5.2 2.8 3.9 8.1 7.7 18.1 2.8 26.7-2 3.5-5.5 6.7-9.8 6.5-4.4-.2-9.1-4.2-8.2-8.9.8-3.7-4.9-5.5-5.6-1.7zm-364.1-67.5c3.9-9.7 9.9-18.5 17.6-25.6 3.2-2.9 8.7-8.6 13.2-9.1 4.4-.5 5.6 4.8 4.9 8-.6 2.9-2.2 5.5-3.6 8-1.9 3.3 3.1 6.4 5 3.1 3.4-5.9 6.9-13 3.1-19.7-3.8-6.6-10.6-6.1-16.4-2.5-13.5 8.5-23.6 21.3-29.5 36-1.4 3.7 4.3 5.3 5.7 1.8zm-5.8-57.4c-4.5-6.4-9.5-13.3-10.7-21.2-1-6.6 1.9-14.6 8.6-17.1 7.6-2.9 13.2 4.9 13.8 11.7.7 8.3-4.8 15.9-9.4 22.2-2.2 3.1 2.8 6.2 5 3.1 6.2-8.5 12.6-19 9.5-29.9-2.2-7.9-9.1-14.8-17.8-13.5-8.3 1.2-14.2 9.1-15.5 17-1.9 11.3 5.1 21.8 11.4 30.5 2.1 3.1 7.2.3 5.1-2.8zM332.3 321c-5-7.7-12.4-12.3-21.5-13.6-1.2-.2-2.7.9-2.9 2.1-3.2 16.6 10 33.3 27.1 33.2 3.8 0 4-5.9.2-5.9-13 .1-24.2-12.7-21.6-25.6-1 .7-1.9 1.4-2.9 2.1 6.8 1 12.7 4.8 16.5 10.6 1.9 3.1 7.2.3 5.1-2.9zM225.5 468.9c3.2-7.7 6.7-17.5 1.8-25.2-3-4.7-9.4-7-14.8-5.8-5.4 1.3-8.4 6.6-7 11.9 1.6 6.2 9.6 10.2 9.6 16.7 0 3.8 5.9 4 5.9.2 0-4.2-2-7.5-4.5-10.7-2-2.5-7.6-7.7-4.7-11.2 2.6-3.1 8.8-.6 10.6 2.1 3.9 5.9-.1 14.6-2.5 20.3-1.5 3.5 4.2 5.2 5.6 1.7zm-34 13.5c-2.2-6.6-4.7-14-10.6-18.3-4.7-3.4-11.5-4.7-16.7-1.6-12.3 7.4-2.2 23.1 6.6 28.3 3.3 1.9 6.4-3.1 3.1-5-4.9-2.9-15.5-15-5.6-18.7 9.9-3.7 15.1 9.8 17.4 16.7 1.2 3.6 7 2.2 5.8-1.4zm-19.6 29.8c-7.4.5-13.5 8.1-10.7 15.5 2.5 6.6 11.2 9.2 17.1 5.5 3.2-2 .4-7.2-2.8-5.2-2.7 1.7-6.8 1.2-8.5-1.8-1.9-3.3 1.1-7.9 4.8-8.1 3.6-.2 3.8-6.1.1-5.9zM466 561c5.5 50.9 7.6 102.1 6.4 153.3-.1 3.8 5.8 4 5.9.2 1.2-51.2-.9-102.4-6.4-153.3-.4-3.7-6.3-3.9-5.9-.2zm36.1 74.8c-2.5 65.2-2.6 130.4-.5 195.6.1 3.8 6 4 5.9.2-2.1-65.2-2-130.4.5-195.6.2-3.8-5.7-4-5.9-.2z"/><path d="M506.4 815.4c4.5 12.4 9 24.7 13.5 37.1 1.3 3.5 7 2.2 5.7-1.4-4.5-12.4-9-24.7-13.5-37.1-1.3-3.6-7-2.2-5.7 1.4zm-45.5 44c-1.9 1.8-3.9 3.7-5.8 5.5-2.8 2.6 1.3 6.9 4.1 4.3 1.9-1.8 3.9-3.7 5.8-5.5 2.8-2.7-1.3-6.9-4.1-4.3zm-135.8 57.3c12.3 6.1 25.5 4.6 38.3 1 15.4-4.3 29.8-10.2 46-10.3 16.7-.2 33.6 1.2 50.2 2.5 17.5 1.4 34.9 3.6 52.1 7.5 3.7.8 5.4-4.8 1.7-5.7-32-7.4-65.6-9.5-98.4-10.3-15.4-.4-29.1 3-43.6 7.6-13.8 4.4-29.4 9.5-43.2 2.6-3.4-1.6-6.5 3.4-3.1 5.1z"/><path d="M455.9 870c-8.3 10.3-18.2 19.2-29.2 26.4-3.1 2.1-.3 7.3 2.8 5.2 12-7.9 22.4-17.4 31.4-28.5 2.4-2.9-2.6-6-5-3.1z"/><path d="M454.7 871.8c-.4 8.1-.9 16.1-1.3 24.2-.2 3.8 5.7 4 5.9.2.4-8.1.9-16.1 1.3-24.2.2-3.8-5.7-4-5.9-.2zm89.9 35.7c.7-5 1.7-11 5.2-14.9 4.3-4.8 10.1-2.7 14.5.7 4.1 3.2 7.6 7.1 11.9 10 4.5 3.1 9.7 4.7 15.1 5.3 11.7 1.3 23.2-2.2 34.9-1.7 9.5.5 21.1 3.7 24.2 13.9 1.1 3.6 6.8 2.2 5.7-1.4-3.3-11.1-13.8-16.3-24.7-17.9-14.1-2-28.2 3.5-42.2.8-7.5-1.5-12.5-6.2-18.1-11-4-3.5-8.5-7.1-14-7.5-13-1-17.1 13.3-18.5 23.5-.4 3.9 5.4 4 6 .2z"/></svg>
+ data/codeworld.svg view
@@ -0,0 +1,1 @@+<svg xmlns="http://www.w3.org/2000/svg" width="663.644" height="273.096"><path d="M334.15 27.342h-4.184c-3.724 0-6.753 3.087-6.753 6.887v33.684c0 3.793 3.03 6.881 6.753 6.881h4.184c3.727 0 6.753-3.088 6.753-6.881V34.229c0-3.8-3.026-6.887-6.753-6.887m0 2.416c2.399 0 4.344 1.999 4.344 4.47v33.685c0 2.472-1.945 4.468-4.344 4.468h-4.184c-2.399 0-4.341-1.996-4.341-4.468V34.229c0-2.472 1.942-4.471 4.341-4.471h4.184"/><path d="M332.463 73.184c-5.102 0-9.252 4.153-9.252 9.252 0 5.101 4.15 9.252 9.252 9.252 5.1 0 9.248-4.15 9.248-9.252 0-5.099-4.148-9.252-9.248-9.252m0 2.414a6.837 6.837 0 0 1 0 13.673 6.842 6.842 0 0 1-6.841-6.835c0-3.77 3.067-6.838 6.841-6.838M332.463 2.414c-7.098 0-12.87 5.776-12.87 12.874 0 7.092 5.772 12.86 12.87 12.86 7.095 0 12.867-5.768 12.867-12.86 0-7.098-5.772-12.874-12.867-12.874m0 2.41c5.771 0 10.452 4.682 10.452 10.464 0 5.766-4.681 10.45-10.452 10.45-5.774 0-10.461-4.684-10.461-10.45 0-5.782 4.687-10.464 10.461-10.464"/><path d="M332.463 89.307c-5.102 0-9.252 4.148-9.252 9.25 0 5.1 4.15 9.246 9.252 9.246 5.1 0 9.248-4.146 9.248-9.246 0-5.102-4.148-9.25-9.248-9.25m0 2.412a6.835 6.835 0 1 1 0 13.67c-3.774 0-6.841-3.06-6.841-6.832a6.84 6.84 0 0 1 6.841-6.838"/><path d="M332.463 106.196c-4.436 0-8.042 3.61-8.042 8.043 0 4.434 3.606 8.04 8.042 8.04 4.434 0 8.039-3.606 8.039-8.04 0-4.434-3.605-8.043-8.039-8.043m0 2.415a5.625 5.625 0 0 1 5.627 5.628 5.625 5.625 0 0 1-5.627 5.625 5.63 5.63 0 0 1-5.633-5.625 5.631 5.631 0 0 1 5.633-5.628"/><path d="M333.869 120.676c-4.105 0-7.44 3.337-7.44 7.436s3.335 7.436 7.44 7.436c4.099 0 7.436-3.337 7.436-7.436s-3.337-7.436-7.436-7.436m0 2.41a5.025 5.025 0 1 1 0 10.049 5.025 5.025 0 1 1 0-10.05"/><path d="M337.89 133.139a6.644 6.644 0 0 0-6.636 6.637c0 3.655 2.976 6.628 6.636 6.628 3.657 0 6.633-2.973 6.633-6.628 0-3.66-2.976-6.637-6.633-6.637m0 2.414a4.222 4.222 0 1 1-.001 8.444 4.222 4.222 0 0 1 0-8.444"/><path d="M343.119 143.998a5.437 5.437 0 0 0-5.432 5.428c0 2.99 2.439 5.426 5.432 5.426a5.43 5.43 0 0 0 5.424-5.426 5.43 5.43 0 0 0-5.424-5.428m0 2.415a3.01 3.01 0 0 1 3.012 3.013 3.016 3.016 0 0 1-6.03 0 3.015 3.015 0 0 1 3.018-3.013M330.468 4.285a6.632 6.632 0 0 0-6.2-4.285 6.635 6.635 0 0 0-6.633 6.633c0 2.423 1.3 4.535 3.237 5.694.596-4.459 5.373-6.746 9.596-8.042M334.325 4.285C335.277 1.781 337.686 0 340.519 0a6.634 6.634 0 0 1 6.638 6.633 6.617 6.617 0 0 1-3.239 5.694c-.599-4.459-5.375-6.746-9.593-8.042"/><path d="M251.957 16.815v2.414-2.414h-.004c-11.672 0-18.519 2.644-19.8 7.645-2.55 9.967 19.328 21.136 42.264 27.016 10.805 2.767 21.55 4.293 30.246 4.293 11.675 0 18.523-2.642 19.81-7.641 1.181-4.627-2.834-9.83-11.614-15.05-7.849-4.666-18.736-8.911-30.656-11.965-10.802-2.772-21.545-4.298-30.246-4.298m-.004 2.414c8.214 0 18.608 1.387 29.654 4.219 24.202 6.203 42.342 16.987 40.526 24.081-.988 3.854-7.679 5.828-17.47 5.828-8.208 0-18.605-1.392-29.648-4.217-24.2-6.207-42.345-16.99-40.525-24.081.99-3.856 7.679-5.83 17.463-5.83M411.35 16.815c-8.7 0-19.443 1.526-30.249 4.298-11.921 3.054-22.806 7.299-30.656 11.966-8.78 5.218-12.796 10.422-11.609 15.049 1.281 4.999 8.13 7.641 19.807 7.641 8.696 0 19.438-1.526 30.245-4.293 22.935-5.88 44.819-17.05 42.265-27.016-1.281-5.001-8.126-7.645-19.802-7.645m0 2.414c9.788 0 16.474 1.974 17.468 5.83 1.814 7.092-16.33 17.874-40.531 24.081-11.043 2.825-21.44 4.217-29.645 4.217-9.794 0-16.483-1.974-17.47-5.828-1.817-7.094 16.326-17.878 40.528-24.081 11.043-2.832 21.439-4.219 29.65-4.219" fill="#407fbf"/><path d="M307.922 42.029c-7.525 0-16.814 1.314-26.153 3.71-19.93 5.111-38.925 14.895-36.673 23.69 1.149 4.476 7.164 6.837 17.39 6.837 7.528 0 16.819-1.315 26.16-3.708 10.302-2.641 19.72-6.32 26.508-10.355 9.74-5.788 10.9-10.449 10.16-13.34-1.144-4.473-7.162-6.834-17.392-6.834m0 2.412c8.436 0 14.204 1.698 15.058 5.024 1.565 6.112-14.072 15.41-34.934 20.754-9.518 2.44-18.48 3.636-25.56 3.636-8.433 0-14.197-1.698-15.05-5.022-1.566-6.12 14.069-15.408 34.929-20.758 9.519-2.438 18.479-3.634 25.557-3.634M356.232 42.029v2.412-2.412h-.004c-10.228 0-16.244 2.361-17.39 6.833-.74 2.892.422 7.553 10.16 13.341 6.792 4.035 16.206 7.714 26.508 10.355 9.344 2.393 18.633 3.708 26.156 3.708 10.232 0 16.244-2.361 17.394-6.837 2.254-8.795-16.74-18.579-36.668-23.69-9.341-2.396-18.628-3.71-26.156-3.71m0 2.412c7.076-.003 16.036 1.196 25.554 3.634 20.864 5.35 36.5 14.638 34.933 20.758-.85 3.324-6.615 5.022-15.057 5.022-7.075 0-16.038-1.197-25.555-3.636-20.86-5.345-36.497-14.642-34.93-20.754.854-3.326 6.62-5.024 15.055-5.024" fill="#407fbf"/><path d="M184.326 32.123l-.828 3.064h-6.779l-5.101 20.276c-2.26 8.94-4.532 15.854-6.823 20.74-3.246 6.9-6.741 11.664-10.484 14.293-2.845 2.01-5.689 3.017-8.538 3.017-1.856 0-3.432-.562-4.73-1.672-.964-.776-1.441-1.78-1.441-3.018 0-.986.395-1.847 1.183-2.571.792-.732 1.754-1.093 2.905-1.093.832 0 1.535.269 2.108.786.57.526.857 1.13.857 1.816 0 .675-.328 1.31-.968 1.894-.5.44-.75.762-.75.977 0 .281.112.497.328.65.277.218.709.327 1.294.327 1.334 0 2.732-.418 4.204-1.254 1.467-.832 2.778-2.08 3.919-3.735 1.144-1.655 2.228-4.043 3.245-7.165.435-1.3 1.596-5.587 3.484-12.855l8.071-31.413h-8.07l.646-3.064c2.57 0 4.36-.18 5.384-.53 1.02-.36 1.955-1.04 2.805-2.044.852-1.004 1.959-2.881 3.318-5.637 1.825-3.715 3.574-6.59 5.245-8.633 2.288-2.754 4.696-4.816 7.213-6.192 2.522-1.378 4.896-2.067 7.124-2.067 2.354 0 4.238.597 5.66 1.787 1.424 1.197 2.13 2.484 2.13 3.872 0 1.088-.351 1.996-1.062 2.74-.712.744-1.622 1.117-2.737 1.117-.961 0-1.744-.28-2.345-.839-.603-.554-.904-1.217-.904-1.996 0-.49.2-1.105.602-1.832.406-.725.608-1.212.608-1.462 0-.432-.142-.755-.42-.975-.404-.307-.99-.464-1.768-.464-1.946 0-3.696.621-5.237 1.86-2.073 1.639-3.932 4.207-5.572 7.697-.836 1.83-2.364 6.36-4.592 13.598zM235.834 98.214v1.992c-5.414-2.726-9.938-5.918-13.558-9.578-5.164-5.198-9.145-11.329-11.94-18.4a59.177 59.177 0 0 1-4.198-22c0-11.117 2.745-21.26 8.232-30.428 5.486-9.158 12.642-15.717 21.464-19.66v2.258c-4.41 2.442-8.032 5.78-10.864 10.008-2.838 4.234-4.952 9.594-6.352 16.085-1.402 6.492-2.098 13.275-2.098 20.339 0 7.674.592 14.65 1.775 20.93.935 4.946 2.064 8.916 3.39 11.912 1.326 2.994 3.11 5.875 5.357 8.638 2.24 2.761 5.17 5.394 8.792 7.904M438.72 90.31c2.24-2.762 4.025-5.645 5.354-8.638 1.325-2.996 2.452-6.967 3.387-11.912 1.18-6.281 1.776-13.256 1.776-20.93 0-7.065-.696-13.847-2.1-20.34-1.396-6.489-3.512-11.849-6.351-16.085-2.828-4.228-6.455-7.565-10.865-10.008V.14c8.824 3.944 15.98 10.502 21.465 19.661 5.485 9.167 8.232 19.312 8.232 30.428 0 7.603-1.399 14.94-4.2 21.999-2.792 7.073-6.776 13.202-11.937 18.401-3.623 3.66-8.142 6.852-13.56 9.577v-1.992c3.628-2.509 6.556-5.142 8.798-7.904M470.148 56.765h38.856v4.424h-38.856zm0-17.61h38.856v4.433h-38.856z" fill="#a6a6a6"/><path d="M76.38 199.979c0 2.09-1.044 3.394-3.524 4.442-1.699.783-4.175 1.432-6.66 1.694-4.308-10.836-13.317-17.228-25.46-17.228-14.752 0-28.723 11.874-28.723 33.814 0 25.456 16.84 40.214 38.646 40.214 7.31 0 15.016-1.566 21.152-4.964.913 1.436 1.568 3.526 1.568 5.485 0 3.916-10.836 9.66-24.546 9.66C21.152 273.096 0 253.9 0 223.091c0-28.467 19.324-44.524 41.39-44.524 16.451 0 28.855 7.966 34.338 19.192.392.786.652 1.569.652 2.22M136.658 237.45c0-18.012-11.095-27.415-23.11-27.415-11.49 0-21.802 8.095-21.802 25.85 0 18.016 11.096 27.424 23.108 27.424 11.492 0 21.804-8.1 21.804-25.859m11.623-.779c0 23.108-15.671 36.424-34.082 36.424-18.406 0-34.073-13.316-34.073-36.424 0-23.108 15.667-36.428 34.073-36.428 18.411 0 34.082 13.32 34.082 36.428M210.643 245.289v-28.202c-5.097-4.832-11.36-7.05-17.89-7.05-14.233 0-24.809 12.4-24.809 29.114 0 15.147 8.094 24.284 20.762 24.284 8.352 0 17.233-5.874 21.937-18.146m0-69.07h7.699c2.613 0 3.658.912 3.658 3.003v76.901c0 5.483 1.828 7.186 4.96 7.186h2.611c.393 1.174.653 2.478.653 4.044 0 2.348-3.136 5.097-8.485 5.097-5.747 0-10.187-4.315-10.968-12.935-4.572 8.236-13.713 13.58-24.55 13.58-16.838 0-29.767-12.661-29.767-33.682 0-22.98 15.537-39.17 34.6-39.17 7.834 0 14.624 2.48 19.59 6.919zM243.154 231.707h37.993c.655-1.436 1.044-3.528 1.044-5.354 0-9.92-6.397-16.317-17.105-16.317-11.617 0-20.627 8.223-21.932 21.67m42.039 27.553c.917 1.176 1.57 3.39 1.57 5.092 0 3.524-8.228 8.745-20.764 8.745-19.844 0-34.596-15.013-34.596-36.424 0-22.719 15.93-36.43 34.206-36.43 16.45 0 27.678 10.837 27.678 25.59 0 3.79-.782 7.572-1.956 10.185-1.828 4.178-4.176 5.354-9.008 5.354h-39.169c1.437 14.364 11.88 21.937 24.673 21.937 6.14 0 12.012-1.181 17.366-4.05"/><path d="M398.35 268.53c-1.043 2.218-2.48 3-5.355 3H382.68l-21.802-76.513c-4.962 22.982-13.318 49.878-24.29 73.512-.91 2.086-2.48 3.002-5.349 3.002h-9.792l-27.157-88.652c3.001-1.96 6.525-3.396 9.137-3.396 1.83 0 2.873.521 3.525 2.352l22.196 75.725c9.531-21.021 17.628-47.264 23.502-77.428h10.838c3.131 0 4.568.916 5.222 3.136l21.416 74.292c10.181-21.804 18.536-48.572 23.893-77.428h8.616c2.87 0 3.915 1.044 3.525 3.267-5.614 28.596-14.624 56.536-27.812 85.13M482.44 237.45c0-18.012-11.097-27.415-23.109-27.415-11.49 0-21.804 8.095-21.804 25.85 0 18.016 11.098 27.424 23.11 27.424 11.489 0 21.802-8.1 21.802-25.859m11.622-.779c0 23.108-15.667 36.424-34.078 36.424-18.41 0-34.077-13.316-34.077-36.424 0-23.108 15.667-36.428 34.077-36.428 18.41 0 34.078 13.32 34.078 36.428M548.814 207.033c0 .912-.393 1.955-1.178 2.87-1.17 1.569-3.002 3.006-4.567 3.917-3.392-2.608-7.964-3.784-12.404-3.784-8.224 0-14.36 5.092-17.233 15.535v45.96h-7.702c-2.745 0-3.657-.783-3.657-2.874v-66.46c2.61-.778 5.352-1.172 7.835-1.172 2.48 0 3.524.916 3.524 2.742v8.354c4.178-7.178 11.229-11.878 20.366-11.878 5.096 0 9.142 1.044 11.882 2.741 2.354 1.437 3.134 2.348 3.134 4.05M574.612 272.45c-10.708 0-16.324-7.056-16.324-19.461v-76.512c2.612-.651 5.352-1.044 7.834-1.044 2.481 0 3.525.916 3.525 2.741v75.208c0 6.92 2.744 9.793 7.967 9.793 2.48 0 5.485-.526 7.573-1.437.783 1.177 1.435 3.135 1.435 4.572 0 2.347-4.442 6.14-12.01 6.14M644.06 245.289v-28.202c-5.092-4.832-11.361-7.05-17.886-7.05-14.234 0-24.81 12.4-24.81 29.114 0 15.147 8.099 24.284 20.76 24.284 8.355 0 17.238-5.874 21.936-18.146m0-69.07h7.702c2.613 0 3.66.912 3.66 3.003v76.901c0 5.483 1.826 7.186 4.96 7.186h2.613c.39 1.174.65 2.478.65 4.044 0 2.348-3.134 5.097-8.487 5.097-5.743 0-10.183-4.315-10.968-12.935-4.57 8.236-13.711 13.58-24.546 13.58-16.845 0-29.766-12.661-29.766-33.682 0-22.98 15.533-39.17 34.598-39.17 7.834 0 14.62 2.48 19.584 6.919z" fill="#407fbf"/></svg>
src/CodeWorld.hs view
@@ -15,133 +15,125 @@ See the License for the specific language governing permissions and limitations under the License. -}-module CodeWorld (- -- * Entry points- drawingOf- , animationOf- , activityOf- , debugActivityOf- , groupActivityOf- , unsafeGroupActivityOf- , simulationOf- , debugSimulationOf- , interactionOf- , debugInteractionOf- , collaborationOf- , unsafeCollaborationOf+module CodeWorld+ ( -- * Entry points+ drawingOf,+ animationOf,+ activityOf,+ debugActivityOf,+ groupActivityOf,+ unsafeGroupActivityOf,+ simulationOf,+ debugSimulationOf,+ interactionOf,+ debugInteractionOf,+ collaborationOf,+ unsafeCollaborationOf,+ -- * Pictures- , Picture- , TextStyle(..)- , Font(..)- , blank- , polyline- , path- , thickPolyline- , thickPath- , polygon- , thickPolygon- , solidPolygon- , curve- , thickCurve- , closedCurve- , thickClosedCurve- , solidClosedCurve- , rectangle- , solidRectangle- , thickRectangle- , circle- , solidCircle- , thickCircle- , arc- , sector- , thickArc- , text- , lettering- , styledText- , styledLettering- , colored- , coloured- , translated- , scaled- , dilated- , rotated- , pictures- , (<>)- , (&)- , coordinatePlane- , codeWorldLogo- , Point- , translatedPoint- , rotatedPoint- , scaledPoint- , dilatedPoint- , Vector- , vectorLength- , vectorDirection- , vectorSum- , vectorDifference- , scaledVector- , rotatedVector- , dotProduct+ Picture,+ TextStyle (..),+ Font (..),+ blank,+ polyline,+ path,+ thickPolyline,+ thickPath,+ polygon,+ thickPolygon,+ solidPolygon,+ curve,+ thickCurve,+ closedCurve,+ thickClosedCurve,+ solidClosedCurve,+ rectangle,+ solidRectangle,+ thickRectangle,+ circle,+ solidCircle,+ thickCircle,+ arc,+ sector,+ thickArc,+ text,+ lettering,+ styledText,+ styledLettering,+ colored,+ coloured,+ translated,+ scaled,+ dilated,+ rotated,+ pictures,+ (<>),+ (&),+ coordinatePlane,+ codeWorldLogo,+ Point,+ translatedPoint,+ rotatedPoint,+ scaledPoint,+ dilatedPoint,+ Vector,+ vectorLength,+ vectorDirection,+ vectorSum,+ vectorDifference,+ scaledVector,+ rotatedVector,+ dotProduct,+ -- * Colors- , Color(..)- , Colour- , pattern RGB- , pattern HSL- , black- , white- , red- , green- , blue- , cyan- , magenta- , yellow- , aquamarine- , orange- , azure- , violet- , chartreuse- , rose- , brown- , pink- , purple- , gray- , grey- , mixed- , lighter- , light- , darker- , dark- , brighter- , bright- , duller- , dull- , translucent- , assortedColors- , hue- , saturation- , luminosity- , alpha- , pattern White- , pattern Black- , pattern Gray- , pattern Grey- , pattern Red- , pattern Orange- , pattern Yellow- , pattern Green- , pattern Blue- , pattern Purple- , pattern Pink- , pattern Brown+ Color (..),+ Colour,+ pattern RGB,+ pattern HSL,+ black,+ white,+ red,+ green,+ blue,+ cyan,+ magenta,+ yellow,+ aquamarine,+ orange,+ azure,+ violet,+ chartreuse,+ rose,+ brown,+ pink,+ purple,+ gray,+ grey,+ mixed,+ lighter,+ light,+ darker,+ dark,+ brighter,+ bright,+ duller,+ dull,+ translucent,+ assortedColors,+ hue,+ saturation,+ luminosity,+ alpha,+ -- * Events- , Event(..)+ Event (..),+ -- * Debugging- , trace- ) where+ trace,+ )+where import CodeWorld.Color-import CodeWorld.Driver+import CodeWorld.EntryPoints import CodeWorld.Event import CodeWorld.Picture-import Data.Monoid
src/CodeWorld/App.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE GADTSyntax #-} {-# LANGUAGE KindSignatures #-}+{-# OPTIONS_GHC -Wno-deprecations -Wno-name-shadowing #-} {- Copyright 2019 The CodeWorld Authors. All rights reserved.@@ -18,9 +19,8 @@ -} module CodeWorld.App- {-# WARNING "This is an experimental API. It can change at any time." #-}- (- Rule,+ {-# WARNING "This is an experimental API. It can change at any time." #-}+ ( Rule, timeRule, eventRule, pictureRule,@@ -29,18 +29,19 @@ subrule, rules, applicationOf,- unsafeMultiApplicationOf- ) where+ unsafeMultiApplicationOf,+ )+where import CodeWorld import Data.List (foldl') import System.Random (StdGen) data Rule :: * -> * where- TimeRule :: (Double -> state -> state) -> Rule state- EventRule :: (Int -> Event -> state -> state) -> Rule state- PictureRule :: (Int -> state -> Picture) -> Rule state- Rules :: [Rule state] -> Rule state+ TimeRule :: (Double -> state -> state) -> Rule state+ EventRule :: (Int -> Event -> state -> state) -> Rule state+ PictureRule :: (Int -> state -> Picture) -> Rule state+ Rules :: [Rule state] -> Rule state timeRule :: (Double -> state -> state) -> Rule state timeRule = TimeRule@@ -59,11 +60,14 @@ subrule :: (a -> b) -> (b -> a -> a) -> Rule b -> Rule a subrule getter setter (TimeRule step_b) = TimeRule step_a- where step_a dt a = setter (step_b dt (getter a)) a+ where+ step_a dt a = setter (step_b dt (getter a)) a subrule getter setter (EventRule event_b) = EventRule event_a- where event_a k ev a = setter (event_b k ev (getter a)) a-subrule getter setter (PictureRule pic_b) = PictureRule pic_a- where pic_a n = pic_b n . getter+ where+ event_a k ev a = setter (event_b k ev (getter a)) a+subrule getter _setter (PictureRule pic_b) = PictureRule pic_a+ where+ pic_a n = pic_b n . getter subrule getter setter (Rules rules) = Rules (map (subrule getter setter) rules) rules :: [Rule state] -> Rule state@@ -71,37 +75,33 @@ applicationOf :: world -> [Rule world] -> IO () applicationOf w rules = interactionOf w step event picture- where step dt = foldl' (.) id [ f dt | f <- concatMap stepHandlers rules ]- event ev = foldl' (.) id [ f ev | f <- concatMap eventHandlers rules ]- picture w = pictures [ pic w | pic <- concatMap pictureHandlers rules ]-- stepHandlers (TimeRule f) = [f]- stepHandlers (Rules rs) = concatMap stepHandlers rs- stepHandlers _ = []-- eventHandlers (EventRule f) = [f 0]- eventHandlers (Rules rs) = concatMap eventHandlers rs- eventHandlers _ = []-- pictureHandlers (PictureRule f) = [f 0]- pictureHandlers (Rules rs) = concatMap pictureHandlers rs- pictureHandlers _ = []+ where+ step dt = foldl' (.) id [f dt | f <- concatMap stepHandlers rules]+ event ev = foldl' (.) id [f ev | f <- concatMap eventHandlers rules]+ picture w = pictures [pic w | pic <- concatMap pictureHandlers rules]+ stepHandlers (TimeRule f) = [f]+ stepHandlers (Rules rs) = concatMap stepHandlers rs+ stepHandlers _ = []+ eventHandlers (EventRule f) = [f 0]+ eventHandlers (Rules rs) = concatMap eventHandlers rs+ eventHandlers _ = []+ pictureHandlers (PictureRule f) = [f 0]+ pictureHandlers (Rules rs) = concatMap pictureHandlers rs+ pictureHandlers _ = [] unsafeMultiApplicationOf :: Int -> (StdGen -> state) -> [Rule state] -> IO () unsafeMultiApplicationOf n initial rules =- unsafeCollaborationOf n initial step event picture- where step dt = foldl' (.) id [ f dt | f <- concatMap stepHandlers rules ]- event k ev = foldl' (.) id [ f k ev | f <- concatMap eventHandlers rules ]- picture k w = pictures [ pic k w | pic <- concatMap pictureHandlers rules ]-- stepHandlers (TimeRule f) = [f]- stepHandlers (Rules rs) = concatMap stepHandlers rs- stepHandlers _ = []-- eventHandlers (EventRule f) = [f]- eventHandlers (Rules rs) = concatMap eventHandlers rs- eventHandlers _ = []-- pictureHandlers (PictureRule f) = [f]- pictureHandlers (Rules rs) = concatMap pictureHandlers rs- pictureHandlers _ = []+ unsafeCollaborationOf n initial step event picture+ where+ step dt = foldl' (.) id [f dt | f <- concatMap stepHandlers rules]+ event k ev = foldl' (.) id [f k ev | f <- concatMap eventHandlers rules]+ picture k w = pictures [pic k w | pic <- concatMap pictureHandlers rules]+ stepHandlers (TimeRule f) = [f]+ stepHandlers (Rules rs) = concatMap stepHandlers rs+ stepHandlers _ = []+ eventHandlers (EventRule f) = [f]+ eventHandlers (Rules rs) = concatMap eventHandlers rs+ eventHandlers _ = []+ pictureHandlers (PictureRule f) = [f]+ pictureHandlers (Rules rs) = concatMap pictureHandlers rs+ pictureHandlers _ = []
src/CodeWorld/App2.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE GADTSyntax #-} {-# LANGUAGE KindSignatures #-}+{-# OPTIONS_GHC -Wno-deprecations #-} {- Copyright 2019 The CodeWorld Authors. All rights reserved.@@ -18,9 +19,8 @@ -} module CodeWorld.App2- {-# WARNING "This is an experimental API. It can change at any time." #-}- (- Application,+ {-# WARNING "This is an experimental API. It can change at any time." #-}+ ( Application, defaultApplication, withTimeStep, withEventHandler,@@ -28,63 +28,69 @@ withMultiEventHandler, withMultiPicture, subapplication,- applicationOf- ) where+ applicationOf,+ )+where import CodeWorld-import Data.List (foldl')-import System.Random (StdGen) data Application :: * -> * where- App :: state- -> (Double -> state -> state)- -> (Int -> Event -> state -> state)- -> (Int -> state -> Picture)- -> Application state+ App ::+ state ->+ (Double -> state -> state) ->+ (Int -> Event -> state -> state) ->+ (Int -> state -> Picture) ->+ Application state defaultApplication :: state -> Application state defaultApplication s =- App s (const id) (const (const id)) (const (const blank))+ App s (const id) (const (const id)) (const (const blank)) -withTimeStep :: (Double -> state -> state)- -> Application state- -> Application state+withTimeStep ::+ (Double -> state -> state) ->+ Application state ->+ Application state withTimeStep f (App initial step event picture) =- App initial (\dt -> f dt . step dt) event picture+ App initial (\dt -> f dt . step dt) event picture -withEventHandler :: (Event -> state -> state)- -> Application state- -> Application state+withEventHandler ::+ (Event -> state -> state) ->+ Application state ->+ Application state withEventHandler f (App initial step event picture) =- App initial step (\k ev -> f ev . event k ev) picture+ App initial step (\k ev -> f ev . event k ev) picture withPicture :: (state -> Picture) -> Application state -> Application state withPicture f (App initial step event picture) =- App initial step event (\k s -> f s & picture k s)+ App initial step event (\k s -> f s & picture k s) -withMultiEventHandler :: (Int -> Event -> state -> state)- -> Application state- -> Application state+withMultiEventHandler ::+ (Int -> Event -> state -> state) ->+ Application state ->+ Application state withMultiEventHandler f (App initial step event picture) =- App initial step (\k ev -> f k ev . event k ev) picture+ App initial step (\k ev -> f k ev . event k ev) picture -withMultiPicture :: (Int -> state -> Picture)- -> Application state- -> Application state+withMultiPicture ::+ (Int -> state -> Picture) ->+ Application state ->+ Application state withMultiPicture f (App initial step event picture) =- App initial step event (\k s -> f k s & picture k s)+ App initial step event (\k s -> f k s & picture k s) -subapplication :: (a -> b)- -> (b -> a -> a)- -> Application b- -> (b -> a)- -> Application a+subapplication ::+ (a -> b) ->+ (b -> a -> a) ->+ Application b ->+ (b -> a) ->+ Application a subapplication getter setter (App initial step event picture) f =- App (f initial)- (\dt s -> setter (step dt (getter s)) s)- (\k ev s -> setter (event k ev (getter s)) s)- (\k -> picture k . getter)+ App+ (f initial)+ (\dt s -> setter (step dt (getter s)) s)+ (\k ev s -> setter (event k ev (getter s)) s)+ (\k -> picture k . getter) applicationOf :: Application world -> IO () applicationOf (App initial step event picture) =- interactionOf initial step (event 0) (picture 0)+ interactionOf initial step (event 0) (picture 0)
src/CodeWorld/CanvasM.hs view
@@ -20,28 +20,32 @@ module CodeWorld.CanvasM where -import Control.Monad import Control.Monad.Reader import Control.Monad.Trans (MonadIO)-import Data.Text (Text, pack)+import Data.Text (Text) #ifdef ghcjs_HOST_OS import Data.JSString.Text-import GHCJS.Marshal.Pure+import GHCJS.DOM+import GHCJS.DOM.Document+import GHCJS.DOM.Element+import GHCJS.DOM.Node+import GHCJS.DOM.NonElementParentNode import GHCJS.Types import qualified JavaScript.Web.Canvas as Canvas import qualified JavaScript.Web.Canvas.Internal as Canvas #else +import Data.Text (pack) import qualified Graphics.Blank as Canvas import Graphics.Blank (Canvas) import Text.Printf #endif -class Monad m => MonadCanvas m where+class (Monad m, MonadIO m) => MonadCanvas m where type Image m save :: m ()@@ -50,9 +54,13 @@ Double -> Double -> Double -> Double -> Double -> Double -> m () translate :: Double -> Double -> m () scale :: Double -> Double -> m ()- newImage :: Int -> Int -> m a -> m (Image m, a)+ newImage :: Int -> Int -> m (Image m)+ builtinImage :: Text -> m (Maybe (Image m))+ withImage :: Image m -> m a -> m a drawImage :: Image m -> Int -> Int -> Int -> Int -> m ()+ drawImgURL :: Text -> Text -> Double -> Double -> m () globalCompositeOperation :: Text -> m ()+ globalAlpha :: Double -> m () lineWidth :: Double -> m () strokeColor :: Int -> Int -> Int -> Double -> m () fillColor :: Int -> Int -> Int -> Double -> m ()@@ -75,6 +83,8 @@ measureText :: Text -> m Double isPointInPath :: (Double, Double) -> m Bool isPointInStroke :: (Double, Double) -> m Bool+ getScreenWidth :: m Double+ getScreenHeight :: m Double saveRestore :: MonadCanvas m => m a -> m a saveRestore m = do@@ -83,129 +93,224 @@ restore return r -#ifdef ghcjs_HOST_OS+#if defined(ghcjs_HOST_OS) data CanvasM a = CanvasM- { unCanvasM :: Canvas.Context -> IO a+ { unCanvasM :: (Double, Double) -> Canvas.Context -> IO a } deriving (Functor) -runCanvasM :: Canvas.Context -> CanvasM a -> IO a-runCanvasM = flip unCanvasM+runCanvasM :: (Double, Double) -> Canvas.Context -> CanvasM a -> IO a+runCanvasM dim ctx m = unCanvasM m dim ctx instance Applicative CanvasM where- pure x = CanvasM (const (return x))- f <*> x = CanvasM (\ctx -> unCanvasM f ctx <*> unCanvasM x ctx)+ pure x = CanvasM (\_ _ -> return x)+ f <*> x = CanvasM (\dim ctx -> unCanvasM f dim ctx <*> unCanvasM x dim ctx) instance Monad CanvasM where return = pure- m >>= f = CanvasM (\ctx -> unCanvasM m ctx >>= ($ ctx) . unCanvasM . f)+ m >>= f = CanvasM $ \dim ctx -> do+ x <- unCanvasM m dim ctx+ unCanvasM (f x) dim ctx foreign import javascript "$2.globalCompositeOperation = $1;"- js_globalCompositeOperation :: JSString -> Canvas.Context -> IO ()+ js_globalCompositeOperation :: JSString -> Canvas.Context -> IO () +foreign import javascript "$2.globalAlpha = $1;"+ js_globalAlpha :: Double -> Canvas.Context -> IO ()+ foreign import javascript "$r = $3.isPointInPath($1, $2);"- js_isPointInPath :: Double -> Double -> Canvas.Context -> IO Bool+ js_isPointInPath :: Double -> Double -> Canvas.Context -> IO Bool foreign import javascript "$r = $3.isPointInStroke($1, $2);"- js_isPointInStroke :: Double -> Double -> Canvas.Context -> IO Bool+ js_isPointInStroke :: Double -> Double -> Canvas.Context -> IO Bool +foreign import javascript interruptible "$1.onload = $c; $1.src = $2;"+ js_loadImage :: Element -> JSString -> IO ()+ instance MonadIO CanvasM where- liftIO = CanvasM . const+ liftIO action = CanvasM $ \_ _ -> action +createOrGetImage :: Text -> Text -> IO Element+createOrGetImage name url = do+ Just doc <- currentDocument+ maybeImg <- getElementById doc name+ case maybeImg of+ Just img -> return img+ Nothing -> do+ img <- createElement doc (textToJSString "img")+ setAttribute img (textToJSString "style") (textToJSString "display: none")+ setAttribute img (textToJSString "id") name+ Just body <- getBody doc+ _ <- appendChild body img+ js_loadImage img (textToJSString url)+ return img+ instance MonadCanvas CanvasM where type Image CanvasM = Canvas.Canvas- save = CanvasM Canvas.save- restore = CanvasM Canvas.restore- transform a b c d e f = CanvasM (Canvas.transform a b c d e f)- translate x y = CanvasM (Canvas.translate x y)- scale x y = CanvasM (Canvas.scale x y)- newImage w h m =- CanvasM $- const $ do- buf <- Canvas.create w h- ctx <- Canvas.getContext buf- a <- unCanvasM m ctx- return (buf, a)+ save = CanvasM (const Canvas.save)+ restore = CanvasM (const Canvas.restore)+ transform a b c d e f = CanvasM (const (Canvas.transform a b c d e f))+ translate x y = CanvasM (const (Canvas.translate x y))+ scale x y = CanvasM (const (Canvas.scale x y))+ newImage w h = liftIO (Canvas.create w h)+ builtinImage name = liftIO $ do+ Just doc <- currentDocument+ canvas <- getElementById doc (textToJSString name)+ return (Canvas.Canvas . unElement <$> canvas)+ withImage img m = liftIO $ do+ ctx <- Canvas.getContext img+ w <- realToFrac <$> Canvas.width img+ h <- realToFrac <$> Canvas.height img+ unCanvasM m (w, h) ctx drawImage (Canvas.Canvas c) x y w h =- CanvasM (Canvas.drawImage (Canvas.Image c) x y w h)+ CanvasM (const (Canvas.drawImage (Canvas.Image c) x y w h))+ drawImgURL name url w h = CanvasM $ \ _ ctx -> do+ img <- createOrGetImage name url+ Canvas.drawImage+ (Canvas.Image (unElement img))+ (round (-w/2))+ (round (-h/2))+ (round w)+ (round h)+ ctx globalCompositeOperation op =- CanvasM (js_globalCompositeOperation (textToJSString op))- lineWidth w = CanvasM (Canvas.lineWidth w)- strokeColor r g b a = CanvasM (Canvas.strokeStyle r g b a)- fillColor r g b a = CanvasM (Canvas.fillStyle r g b a)- font t = CanvasM (Canvas.font (textToJSString t))- textCenter = CanvasM (Canvas.textAlign Canvas.Center)- textMiddle = CanvasM (Canvas.textBaseline Canvas.Middle)- beginPath = CanvasM Canvas.beginPath- closePath = CanvasM Canvas.closePath- moveTo (x, y) = CanvasM (Canvas.moveTo x y)- lineTo (x, y) = CanvasM (Canvas.lineTo x y)+ CanvasM (const (js_globalCompositeOperation (textToJSString op)))+ globalAlpha a = CanvasM (const (js_globalAlpha a))+ lineWidth w = CanvasM (const (Canvas.lineWidth w))+ strokeColor r g b a = CanvasM (const (Canvas.strokeStyle r g b a))+ fillColor r g b a = CanvasM (const (Canvas.fillStyle r g b a))+ font t = CanvasM (const (Canvas.font (textToJSString t)))+ textCenter = CanvasM (const (Canvas.textAlign Canvas.Center))+ textMiddle = CanvasM (const (Canvas.textBaseline Canvas.Middle))+ beginPath = CanvasM (const Canvas.beginPath)+ closePath = CanvasM (const Canvas.closePath)+ moveTo (x, y) = CanvasM (const (Canvas.moveTo x y))+ lineTo (x, y) = CanvasM (const (Canvas.lineTo x y)) quadraticCurveTo (x1, y1) (x2, y2) =- CanvasM (Canvas.quadraticCurveTo x1 y1 x2 y2)+ CanvasM (const (Canvas.quadraticCurveTo x1 y1 x2 y2)) bezierCurveTo (x1, y1) (x2, y2) (x3, y3) =- CanvasM (Canvas.bezierCurveTo x1 y1 x2 y2 x3 y3)- arc x y r a1 a2 dir = CanvasM (Canvas.arc x y r a1 a2 dir)- rect x y w h = CanvasM (Canvas.rect x y w h)- fill = CanvasM Canvas.fill- stroke = CanvasM Canvas.stroke- fillRect x y w h = CanvasM (Canvas.fillRect x y w h)- fillText t (x, y) = CanvasM (Canvas.fillText (textToJSString t) x y)- measureText t = CanvasM (Canvas.measureText (textToJSString t))- isPointInPath (x, y) = CanvasM (js_isPointInPath x y)- isPointInStroke (x, y) = CanvasM (js_isPointInStroke x y)+ CanvasM (const (Canvas.bezierCurveTo x1 y1 x2 y2 x3 y3))+ arc x y r a1 a2 dir = CanvasM (const (Canvas.arc x y r a1 a2 dir))+ rect x y w h = CanvasM (const (Canvas.rect x y w h))+ fill = CanvasM (const Canvas.fill)+ stroke = CanvasM (const Canvas.stroke)+ fillRect x y w h = CanvasM (const (Canvas.fillRect x y w h))+ fillText t (x, y) = CanvasM (const (Canvas.fillText (textToJSString t) x y))+ measureText t = CanvasM (const (Canvas.measureText (textToJSString t)))+ isPointInPath (x, y) = CanvasM (const (js_isPointInPath x y))+ isPointInStroke (x, y) = CanvasM (const (js_isPointInStroke x y))+ getScreenWidth = CanvasM $ \(w, _) _ -> return w+ getScreenHeight = CanvasM $ \(_, h) _ -> return h #else -type CanvasM = Canvas+-- Unfortunately, the Canvas monad from blank-canvas lacks a MonadIO instance.+-- We can recover it by inserting send calls where needed. This looks a lot+-- like a free monad, but we want our own interpreter logic, so it's written+-- by hand. +data CanvasM a = CanvasOp (Maybe Canvas.CanvasContext) (Canvas (CanvasM a))+ | NativeOp (Canvas.DeviceContext -> IO (CanvasM a))+ | PureOp a+ deriving (Functor)++doCanvas :: Maybe Canvas.CanvasContext -> Canvas a -> Canvas a+doCanvas Nothing m = m+doCanvas (Just ctx) m = Canvas.with ctx m++interpCanvas :: CanvasM a -> Canvas (CanvasM a)+interpCanvas (CanvasOp mctx op) = doCanvas mctx op >>= interpCanvas+interpCanvas other = return other+ runCanvasM :: Canvas.DeviceContext -> CanvasM a -> IO a-runCanvasM = Canvas.send+runCanvasM _ (PureOp a) = return a+runCanvasM dctx (NativeOp fm) = fm dctx >>= runCanvasM dctx+runCanvasM dctx m = Canvas.send dctx (interpCanvas m) >>= runCanvasM dctx -instance MonadCanvas Canvas where- type Image Canvas = Canvas.CanvasContext- save = Canvas.save ()- restore = Canvas.restore ()- transform a b c d e f = Canvas.transform (a, b, c, d, e, f)- translate x y = Canvas.translate (x, y)- scale x y = Canvas.scale (x, y)- newImage w h m = do- ctx <- Canvas.newCanvas (w, h)- a <- Canvas.with ctx m- return (ctx, a)- drawImage img x y w h =+instance Applicative CanvasM where+ pure = PureOp++ (CanvasOp mctx1 f) <*> (CanvasOp mctx2 x) = CanvasOp mctx1 (fmap (<*>) f <*> doCanvas mctx2 x)+ f <*> x = f `ap` x++instance Monad CanvasM where+ return = pure+ PureOp x >>= f = f x+ NativeOp op >>= f = NativeOp $ \dctx -> do+ next <- op dctx+ return (next >>= f)+ CanvasOp mctx op >>= f = CanvasOp mctx $ bindCanvas (doCanvas mctx op) f++bindCanvas :: Canvas (CanvasM a) -> (a -> CanvasM b) -> Canvas (CanvasM b)+bindCanvas m cont = do+ next <- m+ case next of+ CanvasOp mctx op -> bindCanvas (doCanvas mctx op) cont+ _ -> return (next >>= cont)++instance MonadIO CanvasM where+ liftIO x = NativeOp $ const $ PureOp <$> x++liftCanvas :: Canvas a -> CanvasM a+liftCanvas m = CanvasOp Nothing (PureOp <$> m)++instance MonadCanvas CanvasM where+ type Image CanvasM = Canvas.CanvasContext++ save = liftCanvas $ Canvas.save ()+ restore = liftCanvas $ Canvas.restore ()+ transform a b c d e f = liftCanvas $ Canvas.transform (a, b, c, d, e, f)+ translate x y = liftCanvas $ Canvas.translate (x, y)+ scale x y = liftCanvas $ Canvas.scale (x, y)+ newImage w h = liftCanvas $ Canvas.newCanvas (w, h)+ builtinImage _name = return Nothing++ withImage ctx (CanvasOp Nothing m) = CanvasOp (Just ctx) m+ withImage _ (CanvasOp mctx m) = CanvasOp mctx m+ withImage ctx (NativeOp fm) = NativeOp $ \dctx -> withImage ctx <$> fm dctx+ withImage _ (PureOp x) = PureOp x++ drawImage img x y w h = liftCanvas $ Canvas.drawImageSize ( img , fromIntegral x , fromIntegral y , fromIntegral w , fromIntegral h)- globalCompositeOperation op = Canvas.globalCompositeOperation op- lineWidth w = Canvas.lineWidth w- strokeColor r g b a = Canvas.strokeStyle++ drawImgURL _name _url _w _h = return ()++ globalCompositeOperation op = liftCanvas $ Canvas.globalCompositeOperation op+ globalAlpha a = liftCanvas $ Canvas.globalAlpha a+ lineWidth w = liftCanvas $ Canvas.lineWidth w+ strokeColor r g b a = liftCanvas $ Canvas.strokeStyle (pack (printf "rgba(%d,%d,%d,%.2f)" r g b a))- fillColor r g b a = Canvas.fillStyle+ fillColor r g b a = liftCanvas $ Canvas.fillStyle (pack (printf "rgba(%d,%d,%d,%.2f)" r g b a))- font t = Canvas.font t- textCenter = Canvas.textAlign Canvas.CenterAnchor- textMiddle = Canvas.textBaseline Canvas.MiddleBaseline- beginPath = Canvas.beginPath ()- closePath = Canvas.closePath ()- moveTo (x, y) = Canvas.moveTo (x, y)- lineTo (x, y) = Canvas.lineTo (x, y)- quadraticCurveTo (x1, y1) (x2, y2) =+ font t = liftCanvas $ Canvas.font t+ textCenter = liftCanvas $ Canvas.textAlign Canvas.CenterAnchor+ textMiddle = liftCanvas $ Canvas.textBaseline Canvas.MiddleBaseline+ beginPath = liftCanvas $ Canvas.beginPath ()+ closePath = liftCanvas $ Canvas.closePath ()+ moveTo (x, y) = liftCanvas $ Canvas.moveTo (x, y)+ lineTo (x, y) = liftCanvas $ Canvas.lineTo (x, y)+ quadraticCurveTo (x1, y1) (x2, y2) = liftCanvas $ Canvas.quadraticCurveTo (x1, y1, x2, y2)- bezierCurveTo (x1, y1) (x2, y2) (x3, y3) =+ bezierCurveTo (x1, y1) (x2, y2) (x3, y3) = liftCanvas $ Canvas.bezierCurveTo (x1, y1, x2, y2, x3, y3)- arc x y r a1 a2 dir = Canvas.arc (x, y, r, a1, a2, dir)- rect x y w h = Canvas.rect (x, y, w, h)- fill = Canvas.fill ()- stroke = Canvas.stroke ()- fillRect x y w h = Canvas.fillRect (x, y, w, h)- fillText t (x, y) = Canvas.fillText (t, x, y)- measureText t = do+ arc x y r a1 a2 dir = liftCanvas $+ Canvas.arc (x, y, r, a1, a2, dir)+ rect x y w h = liftCanvas $ Canvas.rect (x, y, w, h)+ fill = liftCanvas $ Canvas.fill ()+ stroke = liftCanvas $ Canvas.stroke ()+ fillRect x y w h = liftCanvas $ Canvas.fillRect (x, y, w, h)+ fillText t (x, y) = liftCanvas $ Canvas.fillText (t, x, y)+ measureText t = liftCanvas $ do Canvas.TextMetrics w <- Canvas.measureText t return w- isPointInPath (x, y) = Canvas.isPointInPath (x, y)- isPointInStroke (x, y) = return False+ isPointInPath (x, y) = liftCanvas $ Canvas.isPointInPath (x, y)+ isPointInStroke _ = liftCanvas $ return False+ getScreenWidth = liftCanvas $ Canvas.width <$> Canvas.myCanvasContext+ getScreenHeight = liftCanvas $ Canvas.height <$> Canvas.myCanvasContext #endif
src/CodeWorld/CollaborationUI.hs view
@@ -1,11 +1,12 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ParallelListComp #-} {-# LANGUAGE PatternGuards #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE GADTs #-} {-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ViewPatterns #-}+{-# OPTIONS_GHC -Wno-unticked-promoted-constructors -Wno-name-shadowing #-} {- Copyright 2019 The CodeWorld Authors. All rights reserved.@@ -23,23 +24,22 @@ limitations under the License. -} module CodeWorld.CollaborationUI- ( UIState- , SetupPhase(..)- , Step(..)- , initial- , step- , event- , picture- , startWaiting- , updatePlayers- ) where+ ( UIState,+ SetupPhase (..),+ Step (..),+ initial,+ step,+ event,+ picture,+ startWaiting,+ updatePlayers,+ )+where import CodeWorld.Color import CodeWorld.Event import CodeWorld.Picture- import Data.Char-import Data.Monoid import qualified Data.Text as T import Data.Text (Text) @@ -50,36 +50,39 @@ -- The possible UI-triggered transitions of this state are described by -- 'Step'. data SetupPhase- = SMain- | SConnect- | SWait+ = SMain+ | SConnect+ | SWait -- | Possible steps taken from a given setup phase data family Step :: (SetupPhase -> *) -> SetupPhase -> * -data instance Step f SMain = ContinueMain (f SMain)- | Create (f SConnect)- | Join Text (f SConnect)+data instance Step f SMain+ = ContinueMain (f SMain)+ | Create (f SConnect)+ | Join Text (f SConnect) -data instance Step f SConnect = ContinueConnect (f SConnect)- | CancelConnect (f SMain)+data instance Step f SConnect+ = ContinueConnect (f SConnect)+ | CancelConnect (f SMain) -data instance Step f SWait = ContinueWait (f SWait)- | CancelWait (f SMain)+data instance Step f SWait+ = ContinueWait (f SWait)+ | CancelWait (f SMain) -- | The UI state, indexed by the 'SetupPhase' data UIState (s :: SetupPhase) where- MainMenu :: Double -> Point -> UIState SMain- Joining :: Double -> Point -> Text -> UIState SMain- Connecting :: Double -> Point -> UIState SConnect- Waiting- :: Double- -> Point- -> Text- -> Int- -> Int {- numPlayers :: -}- {- present -}- -> UIState SWait+ MainMenu :: Double -> Point -> UIState SMain+ Joining :: Double -> Point -> Text -> UIState SMain+ Connecting :: Double -> Point -> UIState SConnect+ Waiting ::+ Double ->+ Point ->+ Text ->+ Int ->+ Int {- numPlayers :: -} ->+ {- present -}+ UIState SWait continueUIState :: UIState s -> Step UIState s continueUIState s@MainMenu {} = ContinueMain s@@ -120,7 +123,7 @@ updatePlayers :: Int -> Int -> UIState SWait -> UIState SWait updatePlayers n m (Waiting time mousePos code _ _) =- Waiting time mousePos code n m+ Waiting time mousePos code n m -- | Handling a UI event. May change the phase. event :: Event -> UIState s -> Step UIState s@@ -128,35 +131,42 @@ event CreateClick (MainMenu t p) = Create (Connecting t p) event JoinClick (MainMenu t p) = ContinueMain (Joining t p "") event (LetterPress k) (Joining t p code)- | T.length code < 4 = ContinueMain (Joining t p (code <> k))+ | T.length code < 4 = ContinueMain (Joining t p (code <> k)) event BackSpace (Joining t p code)- | T.length code > 0 = ContinueMain (Joining t p (T.init code))+ | T.length code > 0 = ContinueMain (Joining t p (T.init code)) event ConnectClick (Joining t p code)- | T.length code == 4 = Join code (Connecting t p)-event CancelClick (Joining t p code) = ContinueMain (MainMenu t p)+ | T.length code == 4 = Join code (Connecting t p)+event CancelClick (Joining t p _) = ContinueMain (MainMenu t p) event CancelClick (Connecting t p) = CancelConnect (MainMenu t p)-event CancelClick (Waiting t p c n m) = CancelWait (MainMenu t p)+event CancelClick (Waiting t p _ _ _) = CancelWait (MainMenu t p) event _ s = continueUIState s +pattern CreateClick :: Event pattern CreateClick <-- PointerPress (inButton 0 1.5 8 2 -> True)+ PointerPress (inButton 0 1.5 8 2 -> True) +pattern JoinClick :: Event pattern JoinClick <-- PointerPress (inButton 0 (-1.5) 8 2 -> True)+ PointerPress (inButton 0 (-1.5) 8 2 -> True) +pattern ConnectClick :: Event pattern ConnectClick <-- PointerPress (inButton 0 (-3.0) 8 2 -> True)+ PointerPress (inButton 0 (-3.0) 8 2 -> True) +pattern LetterPress :: Text -> Event pattern LetterPress c <- (isLetterPress -> Just c) +pattern BackSpace :: Event pattern BackSpace <- KeyPress "Backspace" +pattern CancelClick :: Event pattern CancelClick <- (isCancelClick -> True) isLetterPress :: Event -> Maybe Text isLetterPress (KeyPress k)- | T.length k == 1- , isLetter (T.head k) = Just (T.toUpper k)+ | T.length k == 1,+ isLetter (T.head k) =+ Just (T.toUpper k) isLetterPress _ = Nothing isCancelClick :: Event -> Bool@@ -166,90 +176,95 @@ picture :: UIState s -> Picture picture (MainMenu time mousePos) =- button "New" (dull green) 0 1.5 8 2 mousePos &- button "Join" (dull green) 0 (-1.5) 8 2 mousePos &- connectScreen "Main Menu" time+ button "New" (dull green) 0 1.5 8 2 mousePos+ & button "Join" (dull green) 0 (-1.5) 8 2 mousePos+ & connectScreen "Main Menu" time picture (Joining time mousePos code) =- translated 0 2 (lettering "Enter the game key:") & letterBoxes white code &- (if T.length code < 4- then button "Cancel" (dull yellow) 0 (-3) 8 2 mousePos- else button "Join" (dull green) 0 (-3) 8 2 mousePos) &- connectScreen "Join Game" time+ translated 0 2 (lettering "Enter the game key:") & letterBoxes white code+ & ( if T.length code < 4+ then button "Cancel" (dull yellow) 0 (-3) 8 2 mousePos+ else button "Join" (dull green) 0 (-3) 8 2 mousePos+ )+ & connectScreen "Join Game" time picture (Connecting time mousePos) =- button "Cancel" (dull yellow) 0 (-3) 8 2 mousePos &- connectScreen "Connecting..." time+ button "Cancel" (dull yellow) 0 (-3) 8 2 mousePos+ & connectScreen "Connecting..." time picture (Waiting time mousePos code numPlayers present) =- translated 0 2 (lettering "Share this key with other players:") &- translated 0 4 (playerDots numPlayers present) &- letterBoxes (HSL 0 0 0.8) code &- button "Cancel" (dull yellow) 0 (-3) 8 2 mousePos &- connectScreen "Waiting" time+ translated 0 2 (lettering "Share this key with other players:")+ & translated 0 4 (playerDots numPlayers present)+ & letterBoxes (HSL 0 0 0.8) code+ & button "Cancel" (dull yellow) 0 (-3) 8 2 mousePos+ & connectScreen "Waiting" time letterBoxes :: Color -> Text -> Picture letterBoxes color txt =- pictures- [ translated x 0 (letterBox color (T.singleton c))- | c <- pad 4 ' ' (take 4 (T.unpack txt))- | x <- [-3, -1, 1, 3]- ]+ pictures+ [ translated x 0 (letterBox color (T.singleton c))+ | c <- pad 4 ' ' (take 4 (T.unpack txt))+ | x <- [-3, -1, 1, 3]+ ] letterBox :: Color -> Text -> Picture letterBox c t =- thickRectangle 0.1 1.5 1.5 & lettering t & colored c (solidRectangle 1.5 1.5)+ thickRectangle 0.1 1.5 1.5 & lettering t & colored c (solidRectangle 1.5 1.5) pad :: Int -> a -> [a] -> [a] pad 0 _ xs = xs-pad n v (x:xs) = x : pad (n - 1) v xs+pad n v (x : xs) = x : pad (n - 1) v xs pad n v [] = v : pad (n - 1) v [] inButton :: Double -> Double -> Double -> Double -> Point -> Bool inButton x y w h (mx, my) =- mx >= x - w / 2 && mx <= x + w / 2 && my >= y - h / 2 && my <= y + h / 2+ mx >= x - w / 2 && mx <= x + w / 2 && my >= y - h / 2 && my <= y + h / 2 button ::- Text -> Color -> Double -> Double -> Double -> Double -> Point -> Picture+ Text -> Color -> Double -> Double -> Double -> Double -> Point -> Picture button txt btnColor x y w h (mx, my) =- translated x y $- colored white (styledLettering Plain SansSerif txt) &- colored color (roundRect w h)+ translated x y $+ colored white (styledLettering Plain SansSerif txt)+ & colored color (roundRect w h) where color- | inButton x y w h (mx, my) = btnColor- | otherwise = dark btnColor+ | inButton x y w h (mx, my) = btnColor+ | otherwise = dark btnColor roundRect :: Double -> Double -> Picture roundRect w h =- solidRectangle w (h - 0.5) & solidRectangle (w - 0.5) h &- pictures- [ translated x y (solidCircle 0.25)- | x <- [-w / 2 + 0.25, w / 2 - 0.25]- , y <- [-h / 2 + 0.25, h / 2 - 0.25]- ]+ solidRectangle w (h - 0.5) & solidRectangle (w - 0.5) h+ & pictures+ [ translated x y (solidCircle 0.25)+ | x <- [- w / 2 + 0.25, w / 2 - 0.25],+ y <- [- h / 2 + 0.25, h / 2 - 0.25]+ ] +playerDots :: Int -> Int -> Picture playerDots n m- | n > 8 = lettering $ T.pack $ show m ++ " / " ++ show n+ | n > 8 = lettering $ T.pack $ show m ++ " / " ++ show n playerDots n m =- pictures- [ translated- (size * fromIntegral i - size * fromIntegral n / 2)- 0- (dot (i <= m))- | i <- [1 .. n]- ]+ pictures+ [ translated+ (size * fromIntegral i - size * fromIntegral n / 2)+ 0+ (dot (i <= m))+ | i <- [1 .. n]+ ] where dot True = solidCircle (0.4 * size) dot False = circle (0.4 * size) size = 1 connectScreen :: Text -> Double -> Picture-connectScreen hdr t = translated 0 (-7) connectBox- & translated 0 2.5 (colored background (solidRectangle 20 3.5))- & translated 0 5 codeWorldLogo- & colored background (solidRectangle 20 20)+connectScreen hdr t =+ translated 0 (-7) connectBox+ & translated 0 2.5 (colored background (solidRectangle 20 4))+ & translated 0 5 codeWorldLogo+ & colored background (solidRectangle 20 20) where- connectBox = scaled 2 2 (lettering hdr)- & rectangle 14 3- & colored connectColor (solidRectangle 14 3)- connectColor = let k = (1 + sin (3 * t)) / 5- in HSL (k + 0.5) 0.8 0.7+ connectBox =+ scaled 2 2 (lettering hdr)+ & rectangle 14 3+ & colored connectColor (solidRectangle 14 3)+ connectColor =+ let k = (1 + sin (3 * t)) / 5+ in HSL (k + 0.5) 0.8 0.7 background = RGBA 0.85 0.86 0.9 1
src/CodeWorld/Color.hs view
@@ -1,5 +1,7 @@+{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE ViewPatterns #-}+{-# OPTIONS_GHC -Wno-name-shadowing #-} {- Copyright 2019 The CodeWorld Authors. All rights reserved.@@ -18,29 +20,29 @@ -} module CodeWorld.Color where -import Data.Fixed (mod')-import Data.List (unfoldr)+import Control.DeepSeq+import GHC.Generics (Generic) -import System.Random (mkStdGen)-import System.Random.Shuffle (shuffle')+data Color+ = RGBA+ !Double+ !Double+ !Double+ !Double+ deriving (Generic, Show, Eq) -data Color =- RGBA !Double- !Double- !Double- !Double- deriving (Show, Eq)+instance NFData Color type Colour = Color pattern RGB :: Double -> Double -> Double -> Color- pattern RGB r g b = RGBA r g b 1 pattern HSL :: Double -> Double -> Double -> Color--pattern HSL h s l <- (toHSL -> Just (h, s, l))- where HSL h s l = fromHSL h s l+pattern HSL h s l <-+ (toHSL -> Just (h, s, l))+ where+ HSL h s l = fromHSL h s l -- Utility functions for pattern synonyms. fence :: Double -> Double@@ -58,18 +60,18 @@ where m1 = l * 2 - m2 m2- | l <= 0.5 = l * (s + 1)- | otherwise = l + s - l * s+ | l <= 0.5 = l * (s + 1)+ | otherwise = l + s - l * s r = convert m1 m2 (h / 2 / pi + 1 / 3) g = convert m1 m2 (h / 2 / pi) b = convert m1 m2 (h / 2 / pi - 1 / 3) convert m1 m2 h- | h < 0 = convert m1 m2 (h + 1)- | h > 1 = convert m1 m2 (h - 1)- | h * 6 < 1 = m1 + (m2 - m1) * h * 6- | h * 2 < 1 = m2- | h * 3 < 2 = m1 + (m2 - m1) * (2 / 3 - h) * 6- | otherwise = m1+ | h < 0 = convert m1 m2 (h + 1)+ | h > 1 = convert m1 m2 (h - 1)+ | h * 6 < 1 = m1 + (m2 - m1) * h * 6+ | h * 2 < 1 = m2+ | h * 3 < 2 = m1 + (m2 - m1) * (2 / 3 - h) * 6+ | otherwise = m1 toHSL :: Color -> Maybe (Double, Double, Double) toHSL c@(RGBA _ _ _ 1) = Just (hue c, saturation c, luminosity c)@@ -77,40 +79,41 @@ mixed :: [Color] -> Color mixed colors = go 0 0 0 0 0 colors- where go rr gg bb aa n ((fenceColor -> RGBA r g b a) : cs) =- go (rr + r^2 * a) (gg + g^2 * a) (bb + b^2 * a) (aa + a) (n + 1) cs- go rr gg bb aa n []- | aa == 0 = RGBA 0 0 0 0- | otherwise = RGBA (sqrt (rr/aa)) (sqrt (gg/aa)) (sqrt (bb/aa)) (aa/n)+ where+ go rr gg bb aa n ((fenceColor -> RGBA r g b a) : cs) =+ go (rr + r * r * a) (gg + g * g * a) (bb + b * b * a) (aa + a) (n + 1) cs+ go rr gg bb aa n []+ | aa == 0 = RGBA 0 0 0 0+ | otherwise = RGBA (sqrt (rr / aa)) (sqrt (gg / aa)) (sqrt (bb / aa)) (aa / n) -- Helper function that sets the alpha of the second color to that -- of the first sameAlpha :: Color -> Color -> Color-sameAlpha (fenceColor -> RGBA r1 g1 b1 a1) (fenceColor -> RGBA r2 g2 b2 a2) =- RGBA r2 g2 b2 a1+sameAlpha (fenceColor -> RGBA _ _ _ a1) (fenceColor -> RGBA r2 g2 b2 _) =+ RGBA r2 g2 b2 a1 lighter :: Double -> Color -> Color lighter d c =- sameAlpha c $ HSL (hue c) (saturation c) (fence (luminosity c + d))+ sameAlpha c $ HSL (hue c) (saturation c) (fence (luminosity c + d)) light :: Color -> Color light = lighter 0.15 darker :: Double -> Color -> Color-darker d = lighter (-d)+darker d = lighter (- d) dark :: Color -> Color dark = darker 0.15 brighter :: Double -> Color -> Color brighter d c =- sameAlpha c $ HSL (hue c) (fence (saturation c + d)) (luminosity c)+ sameAlpha c $ HSL (hue c) (fence (saturation c + d)) (luminosity c) bright :: Color -> Color bright = brighter 0.25 duller :: Double -> Color -> Color-duller d = brighter (-d)+duller d = brighter (- d) dull :: Color -> Color dull = duller 0.25@@ -120,155 +123,150 @@ -- | An infinite list of colors. assortedColors :: [Color]-assortedColors = [ HSL (adjusted h) 0.75 0.5 | h <- [0, 2 * pi / phi ..] ]+assortedColors = [HSL (adjusted h) 0.75 0.5 | h <- [0, 2 * pi / phi ..]] where phi = (1 + sqrt 5) / 2- adjusted x = x + a0- + a1 * sin (1*x) + b1 * cos (1*x)- + a2 * sin (2*x) + b2 * cos (2*x)- + a3 * sin (3*x) + b3 * cos (3*x)- + a4 * sin (4*x) + b4 * cos (4*x)+ adjusted x =+ x + a0+ + a1 * sin (1 * x)+ + b1 * cos (1 * x)+ + a2 * sin (2 * x)+ + b2 * cos (2 * x)+ + a3 * sin (3 * x)+ + b3 * cos (3 * x)+ + a4 * sin (4 * x)+ + b4 * cos (4 * x) a0 = -8.6870353473225553e-02- a1 = 8.6485747604766350e-02+ a1 = 8.6485747604766350e-02 b1 = -9.6564816819163041e-02 a2 = -3.0072759267059756e-03- b2 = 1.5048456422494966e-01- a3 = 9.3179137558373148e-02- b3 = 2.9002513227535595e-03+ b2 = 1.5048456422494966e-01+ a3 = 9.3179137558373148e-02+ b3 = 2.9002513227535595e-03 a4 = -6.6275768228887290e-03 b4 = -1.0451841243520298e-02 hue :: Color -> Double-hue (fenceColor -> RGBA r g b a)- | hi - lo < epsilon = 0- | r == hi && g >= b = (g - b) / (hi - lo) * pi / 3- | r == hi = (g - b) / (hi - lo) * pi / 3 + 2 * pi- | g == hi = (b - r) / (hi - lo) * pi / 3 + 2 / 3 * pi- | otherwise = (r - g) / (hi - lo) * pi / 3 + 4 / 3 * pi+hue (fenceColor -> RGBA r g b _)+ | hi - lo < epsilon = 0+ | r == hi && g >= b = (g - b) / (hi - lo) * pi / 3+ | r == hi = (g - b) / (hi - lo) * pi / 3 + 2 * pi+ | g == hi = (b - r) / (hi - lo) * pi / 3 + 2 / 3 * pi+ | otherwise = (r - g) / (hi - lo) * pi / 3 + 4 / 3 * pi where hi = max r (max g b) lo = min r (min g b) epsilon = 0.000001 saturation :: Color -> Double-saturation (fenceColor -> RGBA r g b a)- | hi - lo < epsilon = 0- | otherwise = (hi - lo) / (1 - abs (hi + lo - 1))+saturation (fenceColor -> RGBA r g b _)+ | hi - lo < epsilon = 0+ | otherwise = (hi - lo) / (1 - abs (hi + lo - 1)) where hi = max r (max g b) lo = min r (min g b) epsilon = 0.000001 luminosity :: Color -> Double-luminosity (fenceColor -> RGBA r g b a) = (lo + hi) / 2+luminosity (fenceColor -> RGBA r g b _) = (lo + hi) / 2 where hi = max r (max g b) lo = min r (min g b) alpha :: Color -> Double-alpha (RGBA r g b a) = fence a+alpha (RGBA _ _ _ a) = fence a --- New-style colors+-- Old-style colors -pattern White :: Color-pattern White = HSL 0.00 0.00 1.00+white, black, red, green, blue, cyan, magenta, yellow :: Color -pattern Black :: Color-pattern Black = HSL 0.00 0.00 0.00+orange, rose, chartreuse, aquamarine, violet, azure :: Color -pattern Gray :: Color-pattern Gray = HSL 0.00 0.00 0.50+gray, grey, brown, purple, pink :: Color -pattern Grey :: Color-pattern Grey = HSL 0.00 0.00 0.50+white = HSL 0.00 0.00 1.00 -pattern Red :: Color-pattern Red = HSL 0.00 0.75 0.50+black = HSL 0.00 0.00 0.00 -pattern Orange :: Color-pattern Orange = HSL 0.61 0.75 0.50+gray = HSL 0.00 0.00 0.50 -pattern Yellow :: Color-pattern Yellow = HSL 0.98 0.75 0.50+grey = HSL 0.00 0.00 0.50 -pattern Green :: Color-pattern Green = HSL 2.09 0.75 0.50+red = HSL 0.00 0.75 0.50 -pattern Blue :: Color-pattern Blue = HSL 3.84 0.75 0.50+orange = HSL 0.61 0.75 0.50 -pattern Purple :: Color-pattern Purple = HSL 4.80 0.75 0.50+yellow = HSL 0.98 0.75 0.50 -pattern Pink :: Color-pattern Pink = HSL 5.76 0.75 0.75+green = HSL 2.09 0.75 0.50 -pattern Brown :: Color-pattern Brown = HSL 0.52 0.60 0.40+blue = HSL 3.84 0.75 0.50 --- Old-style colors+purple = HSL 4.80 0.75 0.50 -white, black, red, green, blue, cyan, magenta, yellow :: Color-orange, rose, chartreuse, aquamarine, violet, azure :: Color-gray, grey :: Color+pink = HSL 5.76 0.75 0.75 -white = White-black = Black-red = Red-yellow = Yellow-green = Green-blue = Blue-orange = Orange-brown = Brown-purple = Purple-pink = Pink-gray = Gray-grey = Grey+brown = HSL 0.52 0.60 0.40 cyan = HSL (3 / 3 * pi) 0.75 0.5+ magenta = HSL (5 / 3 * pi) 0.75 0.5+ chartreuse = HSL (3 / 6 * pi) 0.75 0.5+ aquamarine = HSL (5 / 6 * pi) 0.75 0.5+ azure = HSL (7 / 6 * pi) 0.75 0.5+ violet = HSL (9 / 6 * pi) 0.75 0.5+ rose = HSL (11 / 6 * pi) 0.75 0.5 -{-# WARNING White [ "Please use white (lower case) instead of White."- , "The value White may be removed July 2019." ] #-}-{-# WARNING Black [ "Please use black (lower case) instead of Black."- , "The value Black may be removed July 2019." ] #-}-{-# WARNING Red [ "Please use red (lower case) instead of Red."- , "The value Red may be removed July 2019." ] #-}-{-# WARNING Green [ "Please use green (lower case) instead of Green."- , "The value Green may be removed July 2019." ] #-}-{-# WARNING Blue [ "Please use blue (lower case) instead of Blue."- , "The value Blue may be removed July 2019." ] #-}-{-# WARNING Yellow [ "Please use yellow (lower case) instead of Yellow."- , "The value Yellow may be removed July 2019." ] #-}-{-# WARNING Orange [ "Please use orange (lower case) instead of Orange."- , "The value Orange may be removed July 2019." ] #-}-{-# WARNING Brown [ "Please use brown (lower case) instead of Brown."- , "The value Brown may be removed July 2019." ] #-}-{-# WARNING Purple [ "Please use purple (lower case) instead of Purple."- , "The value Purple may be removed July 2019." ] #-}-{-# WARNING Pink [ "Please use pink (lower case) instead of Pink."- , "The value Pink may be removed July 2019." ] #-}-{-# WARNING Gray [ "Please use gray (lower case) instead of Gray."- , "The value Gray may be removed July 2019." ] #-}-{-# WARNING Grey [ "Please use grey (lower case) instead of Grey."- , "The value Grey may be removed July 2019." ] #-}+{-# WARNING+ magenta+ [ "Please use HSL(5 * pi / 3, 0.75, 0.5) instead of magenta.",+ "The variable magenta may be removed July 2020."+ ]+ #-} -{-# WARNING magenta [ "Please use the RGB function instead of magenta."- , "The variable magenta may be removed July 2020." ] #-}-{-# WARNING cyan [ "Please use the RGB function instead of cyan."- , "The variable cyan may be removed July 2020." ] #-}-{-# WARNING chartreuse [ "Please use the RGB function instead of chartreuse."- , "The variable chartreuse may be removed July 2020." ] #-}-{-# WARNING aquamarine [ "Please use the RGB function instead of aquamarine."- , "The variable aquamarine may be removed July 2020." ] #-}-{-# WARNING azure [ "Please use the RGB function instead of azure."- , "The variable azure may be removed July 2020." ] #-}-{-# WARNING rose [ "Please use the RGB function instead of rose."- , "The variable rose may be removed July 2020." ] #-}-{-# WARNING violet [ "Please use Purple instead of violet."- , "The variable violet may be removed July 2020." ] #-}+{-# WARNING+ cyan+ [ "Please use HSL(pi, 0.75, 0.5) instead of cyan.",+ "The variable cyan may be removed July 2020."+ ]+ #-}++{-# WARNING+ chartreuse+ [ "Please use HSL(pi / 2, 0.75, 0.5) instead of chartreuse.",+ "The variable chartreuse may be removed July 2020."+ ]+ #-}++{-# WARNING+ aquamarine+ [ "Please use HSL(5 * pi / 6, 0.75, 0.5) instead of aquamarine.",+ "The variable aquamarine may be removed July 2020."+ ]+ #-}++{-# WARNING+ azure+ [ "Please use HSL(7 * pi / 6, 0.75, 0.5) instead of azure.",+ "The variable azure may be removed July 2020."+ ]+ #-}++{-# WARNING+ rose+ [ "Please use HSL(11 * pi / 6, 0.75, 0.5) instead of rose.",+ "The variable rose may be removed July 2020."+ ]+ #-}++{-# WARNING+ violet+ [ "Please use purple instead of violet.",+ "The variable violet may be removed July 2020."+ ]+ #-}
+ src/CodeWorld/DrawState.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE BangPatterns #-}++{-+ Copyright 2019 The CodeWorld Authors. All rights reserved.++ Licensed under the Apache License, Version 2.0 (the "License");+ you may not use this file except in compliance with the License.+ You may obtain a copy of the License at++ http://www.apache.org/licenses/LICENSE-2.0++ Unless required by applicable law or agreed to in writing, software+ distributed under the License is distributed on an "AS IS" BASIS,+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+ See the License for the specific language governing permissions and+ limitations under the License.+-}+module CodeWorld.DrawState where++import CodeWorld.Color++data DrawState+ = -- | A 'Color', if already chosen.+ DrawState+ !AffineTransformation+ !(Maybe Color)++-- | @(AffineTransformation a b c d e f)@ represents an affine transformation matrix+--+-- > a c e+-- > b d f+-- > 0 0 1+--+-- References:+-- https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform+-- https://en.wikipedia.org/wiki/Transformation_matrix#Affine_transformations+data AffineTransformation+ = AffineTransformation !Double !Double !Double !Double !Double !Double++initialAffineTransformation :: AffineTransformation+initialAffineTransformation = AffineTransformation 1 0 0 1 0 0++mapDSAT :: (AffineTransformation -> AffineTransformation) -> DrawState -> DrawState+mapDSAT f (DrawState at mc) = DrawState (f at) mc++mapDSColor :: (Maybe Color -> Maybe Color) -> DrawState -> DrawState+mapDSColor f (DrawState at mc) = DrawState at (f mc)++initialDS :: DrawState+initialDS = DrawState initialAffineTransformation Nothing++translateDS :: Double -> Double -> DrawState -> DrawState+translateDS x y = mapDSAT $ \(AffineTransformation a b c d e f) ->+ AffineTransformation+ a+ b+ c+ d+ (a * x + c * y + e)+ (b * x + d * y + f)++scaleDS :: Double -> Double -> DrawState -> DrawState+scaleDS x y = mapDSAT $ \(AffineTransformation a b c d e f) ->+ AffineTransformation (x * a) (x * b) (y * c) (y * d) e f++rotateDS :: Double -> DrawState -> DrawState+rotateDS r = mapDSAT $ \(AffineTransformation a b c d e f) ->+ AffineTransformation+ (a * cos r + c * sin r)+ (b * cos r + d * sin r)+ (c * cos r - a * sin r)+ (d * cos r - b * sin r)+ e+ f++setColorDS :: Color -> DrawState -> DrawState+setColorDS col = mapDSColor $ \mcol ->+ case (col, mcol) of+ (_, Nothing) -> Just col+ (RGBA _ _ _ 0, Just _) -> Just col+ (RGBA _ _ _ a1, Just (RGBA r0 g0 b0 a0)) -> Just (RGBA r0 g0 b0 (a0 * a1))++opaqueDS :: DrawState -> DrawState+opaqueDS = mapDSColor $ fmap $ \(RGBA r g b _) -> RGBA r g b 1++getColorDS :: DrawState -> Maybe Color+getColorDS (DrawState _ col) = col
src/CodeWorld/Driver.hs view
@@ -1,2412 +1,2049 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE ForeignFunctionInterface #-}-{-# LANGUAGE GADTs #-}-{-# LANGUAGE JavaScriptFFI #-}-{-# LANGUAGE KindSignatures #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE MagicHash #-}-{-# LANGUAGE MultiWayIf #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PatternGuards #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE StandaloneDeriving #-}-{-# LANGUAGE StaticPointers #-}-{-# LANGUAGE DataKinds #-}--{-- Copyright 2019 The CodeWorld Authors. All rights reserved.-- Licensed under the Apache License, Version 2.0 (the "License");- you may not use this file except in compliance with the License.- You may obtain a copy of the License at-- http://www.apache.org/licenses/LICENSE-2.0-- Unless required by applicable law or agreed to in writing, software- distributed under the License is distributed on an "AS IS" BASIS,- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.- See the License for the specific language governing permissions and- limitations under the License.--}-module CodeWorld.Driver- ( drawingOf- , animationOf- , activityOf- , debugActivityOf- , groupActivityOf- , unsafeGroupActivityOf- , simulationOf- , debugSimulationOf- , interactionOf- , debugInteractionOf- , collaborationOf- , unsafeCollaborationOf- , trace- ) where--import CodeWorld.CollaborationUI (SetupPhase(..), Step(..), UIState)-import qualified CodeWorld.CollaborationUI as CUI-import qualified CodeWorld.CanvasM as CM-import CodeWorld.CanvasM (CanvasM, runCanvasM)-import CodeWorld.Color-import CodeWorld.Event-import CodeWorld.Picture-import Control.Concurrent-import Control.Concurrent.Chan-import Control.Concurrent.MVar-import Control.Exception-import Control.Monad-import Control.Monad.Trans (liftIO)-import Data.Char (chr)-import Data.List (find, zip4, intercalate)-import Data.Maybe (fromMaybe, isNothing, mapMaybe)-import Data.Monoid-import Data.Serialize-import Data.Serialize.Text-import qualified Data.Text as T-import Data.Text (Text, pack, singleton)-import qualified Debug.Trace-import GHC.Fingerprint.Type-import GHC.Generics-import GHC.Prim-import GHC.Stack-import GHC.StaticPtr-import Numeric (showFFloatAlt)-import System.Environment-import System.IO-import System.IO.Unsafe-import System.Mem.StableName-import System.Random-import Text.Printf-import Text.Read--#ifdef ghcjs_HOST_OS--import CodeWorld.Message-import CodeWorld.Prediction-import qualified Control.Monad.Trans.State as State-import Data.Hashable-import Data.IORef-import qualified Data.JSString-import Data.JSString.Text-import Data.Word-import GHCJS.Concurrent (withoutPreemption)-import GHCJS.DOM-import qualified GHCJS.DOM.ClientRect as ClientRect-import GHCJS.DOM.Document-import GHCJS.DOM.Element-import GHCJS.DOM.EventM-import GHCJS.DOM.GlobalEventHandlers hiding (error)-import GHCJS.DOM.MouseEvent-import GHCJS.DOM.NonElementParentNode-import GHCJS.DOM.Types (Element, unElement)-import qualified GHCJS.DOM.Window as Window-import GHCJS.Foreign-import GHCJS.Foreign.Callback-import GHCJS.Marshal-import GHCJS.Marshal.Pure-import GHCJS.Types-import qualified JavaScript.Array as Array-import JavaScript.Object-import JavaScript.Web.AnimationFrame-import qualified JavaScript.Web.Canvas as Canvas-import qualified JavaScript.Web.Canvas.Internal as Canvas-import qualified JavaScript.Web.Location as Loc-import qualified JavaScript.Web.MessageEvent as WS-import qualified JavaScript.Web.WebSocket as WS-import Unsafe.Coerce--#else--import Data.Time.Clock-import qualified Graphics.Blank as Canvas-import Graphics.Blank (Canvas)-import Text.Printf--#endif------------------------------------------------------------------------------------- The common interface, provided by both implementations below.--- | Draws a 'Picture'. This is the simplest CodeWorld entry point.-drawingOf :: Picture -- ^ The picture to show on the screen.- -> IO ()---- | Shows an animation, with a picture for each time given by the parameter.-animationOf :: (Double -> Picture) -- ^ A function that produces animation- -- frames, given the time in seconds.- -> IO ()---- | Runs an interactive CodeWorld program that responds to events. Activities--- can interact with the user, change over time, and remember information about--- the past.-activityOf- :: world -- ^ The initial state of the interaction.- -> (Event -> world -> world) -- ^ The event handling function, which updates- -- the state given an event.- -> (world -> Picture) -- ^ The visualization function, which converts- -- the state into a picture to display.- -> IO ()---- | Runs an interactive CodeWorld program in debugging mode. In this mode,--- the program gets controls to pause and manipulate time, and even go back in--- time to look at past states.-debugActivityOf- :: world -- ^ The initial state of the interaction.- -> (Event -> world -> world) -- ^ The event handling function, which updates- -- the state given an event.- -> (world -> Picture) -- ^ The visualization function, which converts- -- the state into a picture to display.- -> IO ()---- | Runs an interactive multi-user CodeWorld program that is joined by several--- participants over the internet.-groupActivityOf- :: Int -- ^ The number of participants to expect. The participants will be- -- ^ numbered starting at 0.- -> StaticPtr (StdGen -> world)- -- ^ The initial state of the activity.- -> StaticPtr (Int -> Event -> world -> world)- -- ^ The event handling function, which updates the state given a- -- participant number and user interface event.- -> StaticPtr (Int -> world -> Picture)- -- ^ The visualization function, which converts a participant number- -- and the state into a picture to display.- -> IO ()---- | A version of 'groupActivityOf' that avoids static pointers, and does not--- check for consistency.-unsafeGroupActivityOf- :: Int -- ^ The number of participants to expect. The participants will be- -- ^ numbered starting at 0.- -> (StdGen -> world)- -- ^ The initial state of the activity.- -> (Int -> Event -> world -> world)- -- ^ The event handling function, which updates the state given a- -- participant number and user interface event.- -> (Int -> world -> Picture)- -- ^ The visualization function, which converts a participant number- -- and the state into a picture to display.- -> IO ()---- | Shows a simulation, which is essentially a continuous-time dynamical--- system described by an initial value and step function.-simulationOf- :: world -- ^ The initial state of the simulation.- -> (Double -> world -> world) -- ^ The time step function, which advances- -- the state given the time difference.- -> (world -> Picture) -- ^ The visualization function, which converts- -- the state into a picture to display.- -> IO ()--debugSimulationOf- :: world -- ^ The initial state of the simulation.- -> (Double -> world -> world) -- ^ The time step function, which advances- -- the state given the time difference.- -> (world -> Picture) -- ^ The visualization function, which converts- -- the state into a picture to display.- -> IO ()---- | Runs an interactive event-driven CodeWorld program. This is a--- generalization of simulations that can respond to events like key presses--- and mouse movement.-interactionOf- :: world -- ^ The initial state of the interaction.- -> (Double -> world -> world) -- ^ The time step function, which advances- -- the state given the time difference.- -> (Event -> world -> world) -- ^ The event handling function, which updates- -- the state given a user interface event.- -> (world -> Picture) -- ^ The visualization function, which converts- -- the state into a picture to display.- -> IO ()--debugInteractionOf- :: world -- ^ The initial state of the interaction.- -> (Double -> world -> world) -- ^ The time step function, which advances- -- the state given the time difference.- -> (Event -> world -> world) -- ^ The event handling function, which updates- -- the state given a user interface event.- -> (world -> Picture) -- ^ The visualization function, which converts- -- the state into a picture to display.- -> IO ()---- | Runs an interactive multi-user CodeWorld program, involving multiple--- participants over the internet.-collaborationOf- :: Int -- ^ The number of participants to expect. The participants will be- -- ^ numbered starting at 0.- -> StaticPtr (StdGen -> world)- -- ^ The initial state of the collaboration.- -> StaticPtr (Double -> world -> world)- -- ^ The time step function, which advances the state given the time- -- difference.- -> StaticPtr (Int -> Event -> world -> world)- -- ^ The event handling function, which updates the state given a- -- participant number and user interface event.- -> StaticPtr (Int -> world -> Picture)- -- ^ The visualization function, which converts a participant number- -- and the state into a picture to display.- -> IO ()---- | A version of 'collaborationOf' that avoids static pointers, and does not--- check for consistent parameters.-unsafeCollaborationOf- :: Int -- ^ The number of participants to expect. The participants will be- -- ^ numbered starting at 0.- -> (StdGen -> world)- -- ^ The initial state of the collaboration.- -> (Double -> world -> world)- -- ^ The time step function, which advances the state given the time- -- difference.- -> (Int -> Event -> world -> world)- -- ^ The event handling function, which updates the state given a- -- participant number and user interface event.- -> (Int -> world -> Picture)- -- ^ The visualization function, which converts a participant number- -- and the state into a picture to display.- -> IO ()---- | Prints a debug message to the CodeWorld console when a value is forced.--- This is equivalent to the similarly named function in `Debug.Trace`, except--- that it uses the CodeWorld console instead of standard output.-trace :: Text -> a -> a------------------------------------------------------------------------------------- A Drawing is an intermediate and simpler representation of a Picture, suitable--- for drawing. A drawing does not contain unnecessary metadata like CallStacks.--- The drawer is specific to the platform.-data Drawing- = Shape Drawer- | Transformation (DrawState -> DrawState)- Drawing- | Drawings [Drawing]--#if MIN_VERSION_base(4,11,0)--instance Semigroup Drawing where- a <> Drawings bs = Drawings (a : bs)- a <> b = Drawings [a, b]--#endif--instance Monoid Drawing where- mempty = Drawings []- mappend a (Drawings bs) = Drawings (a : bs)- mappend a b = Drawings [a, b]- mconcat = Drawings---- A DrawState is an affine transformation matrix, plus a Bool indicating whether--- a color has been chosen yet.-type DrawState = (Double, Double, Double, Double, Double, Double, Maybe Color)---- A NodeId a unique id for each node in a Picture of Drawing, chosen by the order--- the node appears in DFS. When a Picture is converted to a drawing the NodeId's of--- corresponding nodes are shared. Always >=0.-type NodeId = Int--pictureToDrawing :: Picture -> Drawing-pictureToDrawing (SolidClosedCurve _ pts) = Shape $ polygonDrawer pts True-pictureToDrawing (SolidPolygon _ pts) = Shape $ polygonDrawer pts False-pictureToDrawing (Polygon _ pts) = Shape $ pathDrawer pts 0 True False-pictureToDrawing (ThickPolygon _ pts w) = Shape $ pathDrawer pts w True False-pictureToDrawing (Rectangle _ w h) = Shape $ pathDrawer (rectangleVertices w h) 0 True False-pictureToDrawing (SolidRectangle _ w h) = Shape $ polygonDrawer (rectangleVertices w h) False-pictureToDrawing (ThickRectangle _ lw w h) = Shape $ pathDrawer (rectangleVertices w h) lw True False-pictureToDrawing (ClosedCurve _ pts) = Shape $ pathDrawer pts 0 True True-pictureToDrawing (ThickClosedCurve _ pts w) = Shape $ pathDrawer pts w True True-pictureToDrawing (Circle _ r) = Shape $ arcDrawer 0 (2 * pi) r 0-pictureToDrawing (SolidCircle _ r) = Shape $ sectorDrawer 0 (2 * pi) r -pictureToDrawing (ThickCircle _ lw r) = Shape $ arcDrawer 0 (2 * pi) r lw-pictureToDrawing (Polyline _ pts) = Shape $ pathDrawer pts 0 False False-pictureToDrawing (ThickPolyline _ pts w) = Shape $ pathDrawer pts w False False-pictureToDrawing (Curve _ pts) = Shape $ pathDrawer pts 0 False True-pictureToDrawing (ThickCurve _ pts w) = Shape $ pathDrawer pts w False True-pictureToDrawing (Sector _ b e r) = Shape $ sectorDrawer b e r-pictureToDrawing (Arc _ b e r) = Shape $ arcDrawer b e r 0-pictureToDrawing (ThickArc _ b e r w) = Shape $ arcDrawer b e r w-pictureToDrawing (Lettering _ txt) = Shape $ textDrawer Plain Serif txt-pictureToDrawing (Blank _) = Drawings $ []-pictureToDrawing (StyledLettering _ sty fnt txt) = Shape $ textDrawer sty fnt txt-pictureToDrawing (Logo _) = Shape $ logoDrawer-pictureToDrawing (CoordinatePlane _) = Shape $ coordinatePlaneDrawer-pictureToDrawing (Color _ col p) =- Transformation (setColorDS col) $ pictureToDrawing p-pictureToDrawing (Translate _ x y p) =- Transformation (translateDS x y) $ pictureToDrawing p-pictureToDrawing (Scale _ x y p) =- Transformation (scaleDS x y) $ pictureToDrawing p-pictureToDrawing (Dilate _ k p) =- Transformation (scaleDS k k) $ pictureToDrawing p-pictureToDrawing (Rotate _ r p) =- Transformation (rotateDS r) $ pictureToDrawing p-pictureToDrawing (Pictures _ ps) = Drawings $ pictureToDrawing <$> ps-pictureToDrawing (PictureAnd _ ps) = Drawings $ pictureToDrawing <$> ps--initialDS :: DrawState-initialDS = (1, 0, 0, 1, 0, 0, Nothing)--translateDS :: Double -> Double -> DrawState -> DrawState-translateDS x y (a, b, c, d, e, f, hc) =- (a, b, c, d, a * 25 * x + c * 25 * y + e, b * 25 * x + d * 25 * y + f, hc)--scaleDS :: Double -> Double -> DrawState -> DrawState-scaleDS x y (a, b, c, d, e, f, hc) = (x * a, x * b, y * c, y * d, e, f, hc)--rotateDS :: Double -> DrawState -> DrawState-rotateDS r (a, b, c, d, e, f, hc) =- ( a * cos r + c * sin r- , b * cos r + d * sin r- , c * cos r - a * sin r- , d * cos r - b * sin r- , e- , f- , hc)--setColorDS :: Color -> DrawState -> DrawState-setColorDS col (a, b, c, d, e, f, Nothing) = (a, b, c, d, e, f, Just col)-setColorDS col@(RGBA _ _ _ 0) (a, b, c, d, e, f, _) =- (a, b, c, d, e, f, Just col)-setColorDS (RGBA _ _ _ alpha1) (a, b, c, d, e, f, Just (RGBA rr gg bb alpha2)) =- (a, b, c, d, e, f, Just (RGBA rr gg bb (alpha1 * alpha2)))--getColorDS :: DrawState -> Maybe Color-getColorDS (a, b, c, d, e, f, col) = col--polygonDrawer :: [Point] -> Bool -> Drawer-pathDrawer :: [Point] -> Double -> Bool -> Bool -> Drawer-sectorDrawer :: Double -> Double -> Double -> Drawer-arcDrawer :: Double -> Double -> Double -> Double -> Drawer-textDrawer :: TextStyle -> Font -> Text -> Drawer-logoDrawer :: Drawer-coordinatePlaneDrawer :: Drawer-coordinatePlaneDrawing :: Drawing-coordinatePlaneDrawing = pictureToDrawing $ axes <> numbers <> guidelines- where- xline y = thickPolyline 0.01 [(-10, y), (10, y)]- xaxis = thickPolyline 0.03 [(-10, 0), (10, 0)]- axes = xaxis <> rotated (pi / 2) xaxis- xguidelines = pictures [xline k | k <- [-10,-9 .. 10]]- guidelines = xguidelines <> rotated (pi / 2) xguidelines- numbers = xnumbers <> ynumbers- xnumbers =- pictures- [ translated- (fromIntegral k)- 0.3- (scaled 0.5 0.5 (lettering (pack (show k))))- | k <- [-9,-8 .. 9]- , k /= 0- ]- ynumbers =- pictures- [ translated- 0.3- (fromIntegral k)- (scaled 0.5 0.5 (lettering (pack (show k))))- | k <- [-9,-8 .. 9]- , k /= 0- ]--withDS :: DrawState -> CanvasM a -> CanvasM a-withDS (ta, tb, tc, td, te, tf, col) action = CM.saveRestore $ do- CM.transform ta tb tc td te tf- CM.beginPath- action--applyColor :: DrawState -> CanvasM ()-applyColor ds =- case getColorDS ds of- Nothing -> do- CM.strokeColor 0 0 0 1- CM.fillColor 0 0 0 1- Just (RGBA r g b a) -> do- CM.strokeColor- (round $ r * 255)- (round $ g * 255)- (round $ b * 255)- a- CM.fillColor- (round $ r * 255)- (round $ g * 255)- (round $ b * 255)- a--type Drawer = DrawState -> DrawMethods--data DrawMethods = DrawMethods- { drawShape :: CanvasM ()- , shapeContains :: CanvasM Bool- }--polygonDrawer ps smooth ds =- DrawMethods- { drawShape = do- trace- applyColor ds- CM.fill- , shapeContains = do- trace- CM.isPointInPath (0, 0)- }- where- trace = withDS ds $ followPath ps True smooth--pathDrawer ps w closed smooth ds =- DrawMethods- { drawShape = drawFigure ds w $ followPath ps closed smooth- , shapeContains =- do let width =- if w == 0- then 0.3- else w- drawFigure ds width $ followPath ps closed smooth- CM.isPointInStroke (0, 0)- }--sectorDrawer b e r ds =- DrawMethods- { drawShape = do- trace- applyColor ds- CM.fill- , shapeContains = do- trace- CM.isPointInPath (0, 0)- }- where- trace =- withDS ds $ do- CM.arc 0 0 (25 * abs r) b e (b > e)- CM.lineTo (0, 0)--arcDrawer b e r w ds =- DrawMethods- { drawShape =- drawFigure ds w $ CM.arc 0 0 (25 * abs r) b e (b > e)- , shapeContains =- do let width =- if w == 0- then 0.3- else w- CM.lineWidth (width * 25)- drawFigure ds width $- CM.arc 0 0 (25 * abs r) b e (b > e)- CM.isPointInStroke (0, 0)- }--textDrawer sty fnt txt ds =- DrawMethods- { drawShape =- withDS ds $ do- CM.scale 1 (-1)- applyColor ds- CM.font (fontString sty fnt)- CM.fillText txt (0, 0)- , shapeContains =- do CM.font (fontString sty fnt)- width <- CM.measureText txt- let height = 25 -- constant, defined in fontString- withDS ds $- CM.rect ((-0.5) * width) ((-0.5) * height) width height- CM.isPointInPath (0, 0)- }--logoDrawer ds =- DrawMethods- { drawShape =- withDS ds $ do- CM.scale 1 (-1)- drawCodeWorldLogo ds (-221) (-91) 442 182- , shapeContains =- withDS ds $ do- CM.rect (-221) (-91) 442 182- CM.isPointInPath (0, 0)- }--coordinatePlaneDrawer ds =- DrawMethods- { drawShape = drawDrawing ds coordinatePlaneDrawing- , shapeContains = fst <$> findTopShape ds coordinatePlaneDrawing- }--followPath :: [Point] -> Bool -> Bool -> CanvasM ()-followPath [] closed _ = return ()-followPath [p1] closed _ = return ()-followPath ((sx, sy):ps) closed False = do- CM.moveTo (25 * sx, 25 * sy)- forM_ ps $ \(x, y) -> CM.lineTo (25 * x, 25 * y)- when closed $ CM.closePath-followPath [p1, p2] False True = followPath [p1, p2] False False-followPath ps False True = do- let [(x1, y1), (x2, y2), (x3, y3)] = take 3 ps- dprev = sqrt ((x2 - x1) ^ 2 + (y2 - y1) ^ 2)- dnext = sqrt ((x3 - x2) ^ 2 + (y3 - y2) ^ 2)- p = dprev / (dprev + dnext)- cx = x2 + p * (x1 - x3) / 2- cy = y2 + p * (y1 - y3) / 2- CM.moveTo (25 * x1, 25 * y1)- CM.quadraticCurveTo (25 * cx, 25 * cy) (25 * x2, 25 * y2)- forM_ (zip4 ps (tail ps) (tail $ tail ps) (tail $ tail $ tail ps)) $ \((x1, y1), (x2, y2), (x3, y3), (x4, y4)) -> do- let dp = sqrt ((x2 - x1) ^ 2 + (y2 - y1) ^ 2)- d1 = sqrt ((x3 - x2) ^ 2 + (y3 - y2) ^ 2)- d2 = sqrt ((x4 - x3) ^ 2 + (y4 - y3) ^ 2)- p = d1 / (d1 + d2)- r = d1 / (dp + d1)- cx1 = x2 + r * (x3 - x1) / 2- cy1 = y2 + r * (y3 - y1) / 2- cx2 = x3 + p * (x2 - x4) / 2- cy2 = y3 + p * (y2 - y4) / 2- CM.bezierCurveTo- (25 * cx1, 25 * cy1)- (25 * cx2, 25 * cy2)- (25 * x3, 25 * y3)- let [(x1, y1), (x2, y2), (x3, y3)] = reverse $ take 3 $ reverse ps- dp = sqrt ((x2 - x1) ^ 2 + (y2 - y1) ^ 2)- d1 = sqrt ((x3 - x2) ^ 2 + (y3 - y2) ^ 2)- r = d1 / (dp + d1)- cx = x2 + r * (x3 - x1) / 2- cy = y2 + r * (y3 - y1) / 2- CM.quadraticCurveTo (25 * cx, 25 * cy) (25 * x3, 25 * y3)-followPath ps@(_:(sx, sy):_) True True = do- CM.moveTo (25 * sx, 25 * sy)- let rep = cycle ps- forM_ (zip4 ps (tail rep) (tail $ tail rep) (tail $ tail $ tail rep)) $ \((x1, y1), (x2, y2), (x3, y3), (x4, y4)) -> do- let dp = sqrt ((x2 - x1) ^ 2 + (y2 - y1) ^ 2)- d1 = sqrt ((x3 - x2) ^ 2 + (y3 - y2) ^ 2)- d2 = sqrt ((x4 - x3) ^ 2 + (y4 - y3) ^ 2)- p = d1 / (d1 + d2)- r = d1 / (dp + d1)- cx1 = x2 + r * (x3 - x1) / 2- cy1 = y2 + r * (y3 - y1) / 2- cx2 = x3 + p * (x2 - x4) / 2- cy2 = y3 + p * (y2 - y4) / 2- CM.bezierCurveTo- (25 * cx1, 25 * cy1)- (25 * cx2, 25 * cy2)- (25 * x3, 25 * y3)- CM.closePath--drawFigure :: DrawState -> Double -> CanvasM () -> CanvasM ()-drawFigure ds w figure = do- withDS ds $ do- figure- when (w /= 0) $ do- CM.lineWidth (25 * w)- applyColor ds- CM.stroke- when (w == 0) $ do- CM.lineWidth 1- applyColor ds- CM.stroke--fontString :: TextStyle -> Font -> Text-fontString style font = stylePrefix style <> "25px " <> fontName font- where- stylePrefix Plain = ""- stylePrefix Bold = "bold "- stylePrefix Italic = "italic "- fontName SansSerif = "sans-serif"- fontName Serif = "serif"- fontName Monospace = "monospace"- fontName Handwriting = "cursive"- fontName Fancy = "fantasy"- fontName (NamedFont txt) = "\"" <> T.filter (/= '"') txt <> "\""--drawDrawing :: DrawState -> Drawing -> CanvasM ()-drawDrawing ds (Shape shape) = drawShape $ shape ds-drawDrawing ds (Transformation f d) = drawDrawing (f ds) d-drawDrawing ds (Drawings drs) = mapM_ (drawDrawing ds) (reverse drs)--findTopShape :: DrawState -> Drawing -> CanvasM (Bool, Int)-findTopShape ds (Shape drawer) = do- contained <- shapeContains $ drawer ds- case contained of- True -> return (True, 0)- False -> return (False, 1)-findTopShape ds (Transformation f d) =- fmap (+ 1) <$> findTopShape (f ds) d-findTopShape ds (Drawings []) = return (False, 1)-findTopShape ds (Drawings (dr:drs)) = do- (found, count) <- findTopShape ds dr- case found of- True -> return (True, count + 1)- False -> fmap (+ count) <$> findTopShape ds (Drawings drs)--#ifdef ghcjs_HOST_OS------------------------------------------------------------------------------------- GHCJS implementation of drawing---- Debug Mode logic-inspect ::- IO Picture -> (Bool -> IO ()) -> (Bool -> Maybe NodeId -> IO ()) -> IO ()-inspect getPic handleActive highlight =- initDebugMode (handlePointRequest getPic) handleActive getPic highlight--handlePointRequest :: IO Picture -> Point -> IO (Maybe NodeId)-handlePointRequest getPic pt = do- drawing <- pictureToDrawing <$> getPic- findTopShapeFromPoint pt drawing--foreign import javascript unsafe "$1.drawImage($2, $3, $4, $5, $6);"- canvasDrawImage :: Canvas.Context -> Element -> Int -> Int -> Int -> Int -> IO ()--foreign import javascript unsafe "$1.getContext('2d', { alpha: false })"- getCodeWorldContext :: Canvas.Canvas -> IO Canvas.Context--foreign import javascript unsafe "showCanvas()"- showCanvas :: IO ()--canvasFromElement :: Element -> Canvas.Canvas-canvasFromElement = Canvas.Canvas . unElement--elementFromCanvas :: Canvas.Canvas -> Element-elementFromCanvas = pFromJSVal . jsval--getTime :: IO Double-getTime = (/ 1000) <$> js_getHighResTimestamp--foreign import javascript unsafe "performance.now()"- js_getHighResTimestamp :: IO Double--nextFrame :: IO Double-nextFrame = waitForAnimationFrame >> getTime--drawCodeWorldLogo ::- DrawState -> Int -> Int -> Int -> Int -> CanvasM ()-drawCodeWorldLogo ds x y w h = do- Just doc <- liftIO $ currentDocument- Just canvas <- liftIO $ getElementById doc ("cwlogo" :: JSString)- case getColorDS ds of- Nothing -> CM.drawImage (canvasFromElement canvas) x y w h- Just (RGBA r g b a)- -- This is a tough case. The best we can do is to allocate an- -- offscreen buffer as a temporary.- -> do- (img, _) <- CM.newImage w h $ do- applyColor ds- CM.fillRect 0 0 (fromIntegral w) (fromIntegral h)- CM.globalCompositeOperation "destination-in"- CM.drawImage (canvasFromElement canvas) 0 0 w h- CM.drawImage img x y w h--initDebugMode ::- (Point -> IO (Maybe NodeId))- -> (Bool -> IO ())- -> IO Picture- -> (Bool -> Maybe NodeId -> IO ())- -> IO ()-initDebugMode getnode setactive getpicture highlight = do- getnodeCB <-- syncCallback1' $ \pointJS -> do- let obj = unsafeCoerce pointJS- x <- pFromJSVal <$> getProp "x" obj- y <- pFromJSVal <$> getProp "y" obj- pToJSVal . fromMaybe (-1) <$> getnode (x, y)- setactiveCB <- syncCallback1 ContinueAsync $ setactive . pFromJSVal- getpictureCB <- syncCallback' $ getpicture >>= picToObj- highlightCB <-- syncCallback2 ContinueAsync $ \t n ->- let select = pFromJSVal t- node =- case ((pFromJSVal n) :: Int) < 0 of- True -> Nothing- False -> Just $ pFromJSVal n- in highlight select node- drawCB <-- syncCallback2 ContinueAsync $ \c n -> do- let canvas = unsafeCoerce c :: Element- nodeId = pFromJSVal n- drawing <- pictureToDrawing <$> getpicture- let node = fromMaybe (Drawings []) $ fst <$> getDrawNode nodeId drawing- offscreenCanvas <- Canvas.create 500 500- setCanvasSize canvas canvas- setCanvasSize (elementFromCanvas offscreenCanvas) canvas- screen <- getCodeWorldContext (canvasFromElement canvas)- rect <- getBoundingClientRect canvas- withScreen (elementFromCanvas offscreenCanvas) rect $- drawFrame (node <> coordinatePlaneDrawing)- rect <- getBoundingClientRect canvas- cw <- ClientRect.getWidth rect- ch <- ClientRect.getHeight rect- canvasDrawImage- screen- (elementFromCanvas offscreenCanvas)- 0- 0- (round cw)- (round ch)- js_initDebugMode getnodeCB setactiveCB getpictureCB highlightCB drawCB--foreign import javascript unsafe "initDebugMode($1,$2,$3,$4,$5)"- js_initDebugMode :: Callback (JSVal -> IO JSVal)- -> Callback (JSVal -> IO ())- -> Callback (IO JSVal)- -> Callback (JSVal -> JSVal -> IO ())- -> Callback (JSVal -> JSVal -> IO ())- -> IO ()--picToObj :: Picture -> IO JSVal-picToObj = fmap fst . flip State.runStateT 0 . picToObj'--picToObj' :: Picture -> State.StateT Int IO JSVal-picToObj' pic = objToJSVal <$> case pic of- Pictures _ ps -> mkNodeWithChildren ps- PictureAnd _ ps -> mkNodeWithChildren ps- Color _ _ p -> mkNodeWithChild p- Translate _ _ _ p -> mkNodeWithChild p- Scale _ _ _ p -> mkNodeWithChild p- Dilate _ _ p -> mkNodeWithChild p- Rotate _ _ p -> mkNodeWithChild p- _ -> mkSimpleNode- where- mkSimpleNode :: State.StateT Int IO Object- mkSimpleNode = do- obj <- liftIO create- id <- do- currentId <- State.get- State.put (currentId + 1)- return currentId- liftIO $ do- setProp "id" (pToJSVal id) obj- setProp "name" (pToJSVal $ (trim 80 . describePicture) pic) obj- case getPictureSrcLoc pic of- Just loc -> do- setProp "startLine" (pToJSVal $ srcLocStartLine loc) obj- setProp "startCol" (pToJSVal $ srcLocStartCol loc) obj- setProp "endLine" (pToJSVal $ srcLocEndLine loc) obj- setProp "endCol" (pToJSVal $ srcLocEndCol loc) obj- Nothing -> return ()- return obj-- mkNodeWithChild :: Picture -> State.StateT Int IO Object- mkNodeWithChild p = do- obj <- mkSimpleNode- subPic <- picToObj' p- liftIO $ setProp "picture" subPic obj- return obj-- mkNodeWithChildren :: [Picture] -> State.StateT Int IO Object- mkNodeWithChildren ps = do- obj <- mkSimpleNode- arr <- liftIO $ Array.create- mapM_ (\p -> picToObj' p >>= liftIO . flip Array.push arr) ps- liftIO $ setProp "pictures" (unsafeCoerce arr) obj- return obj-- objToJSVal = unsafeCoerce :: Object -> JSVal--trim :: Int -> String -> String-trim x y = let mid = (x - 2) `div` 2- in case x >= (length y) of- True -> y :: String- False -> take mid y ++ ".." ++ (reverse $ take mid $ reverse y)--foreign import javascript unsafe "/\\bmode=haskell\\b/.test(location.search)"- haskellMode :: Bool--showFloat :: Double -> String-showFloat x- | haskellMode && x < 0 = "(" ++ result ++ ")"- | otherwise = result- where result = stripZeros (showFFloatAlt (Just 4) x "")- stripZeros = reverse . dropWhile (== '.') . dropWhile (== '0') . reverse--showPoints :: [Point] -> String-showPoints pts =- "[" ++- intercalate ", " [- "(" ++ showFloat x ++ ", " ++ showFloat y ++ ")"- | (x, y) <- pts- ] ++- "]"--showColor :: Color -> String-showColor c@(RGBA r g b a)- | c == black = "black"- | c == white = "white"- | c == red = "red"- | c == green = "green"- | c == blue = "blue"- | c == yellow = "yellow"- | c == orange = "orange"- | c == brown = "brown"- | c == pink = "pink"- | c == purple = "purple"- | c == gray = "gray"- | haskellMode, a == 1 = printf "(RGB %s %s %s)" (showFloat r) (showFloat g) (showFloat b)- | a == 1 = printf "RGB(%s, %s, %s)" (showFloat r) (showFloat g) (showFloat b)- | haskellMode = printf "(RGBA %s %s %s %s)" (showFloat r) (showFloat g) (showFloat b) (showFloat a)- | otherwise = printf "RGBA(%s, %s, %s, %s)" (showFloat r) (showFloat g) (showFloat b) (showFloat a)--describePicture :: Picture -> String-describePicture (Rectangle _ w h)- | haskellMode = printf "rectangle %s %s" (showFloat w) (showFloat h)- | otherwise = printf "rectangle(%s, %s)" (showFloat w) (showFloat h)-describePicture (SolidRectangle _ w h)- | haskellMode = printf "solidRectangle %s %s" (showFloat w) (showFloat h)- | otherwise = printf "solidRectangle(%s, %s)" (showFloat w) (showFloat h)-describePicture (ThickRectangle _ lw w h)- | haskellMode = printf "thickRectangle %s %s %s" (showFloat lw) (showFloat w) (showFloat h)- | otherwise = printf "thickRectangle(%s, %s, %s)" (showFloat w) (showFloat h) (showFloat lw)-describePicture (Circle _ r)- | haskellMode = printf "circle %s" (showFloat r)- | otherwise = printf "circle(%s)" (showFloat r)-describePicture (SolidCircle _ r)- | haskellMode = printf "solidCircle %s" (showFloat r)- | otherwise = printf "solidCircle(%s)" (showFloat r)-describePicture (ThickCircle _ lw r)- | haskellMode = printf "thickCircle %s %s" (showFloat lw) (showFloat r)- | otherwise = printf "thickCircle(%s, %s)" (showFloat r) (showFloat lw)-describePicture (SolidPolygon _ pts)- | haskellMode = printf "solidPolygon %s" (showPoints pts)- | otherwise = printf "solidPolygon(%s)" (showPoints pts)-describePicture (SolidClosedCurve _ pts)- | haskellMode = printf "solidClosedCurve %s" (showPoints pts)- | otherwise = printf "solidClosedCurve(%s)" (showPoints pts)-describePicture (Polygon _ pts)- | haskellMode = printf "polygon %s" (showPoints pts)- | otherwise = printf "polygon(%s)" (showPoints pts)-describePicture (ThickPolygon _ pts w)- | haskellMode = printf "thickPolygon %s %s" (showFloat w) (showPoints pts)- | otherwise = printf "thickPolygon(%s, %s)" (showPoints pts) (showFloat w)-describePicture (ClosedCurve _ pts)- | haskellMode = printf "closedCurve %s" (showPoints pts)- | otherwise = printf "closedCurve(%s)" (showPoints pts)-describePicture (ThickClosedCurve _ pts w)- | haskellMode = printf "thickClosedCurve %s %s" (showFloat w) (showPoints pts)- | otherwise = printf "thickClosedCurve(%s, %s)" (showPoints pts) (showFloat w)-describePicture (Polyline _ pts)- | haskellMode = printf "polyline %s" (showPoints pts)- | otherwise = printf "polyline(%s)" (showPoints pts)-describePicture (ThickPolyline _ pts w)- | haskellMode = printf "thickPolyline %s %s" (showFloat w) (showPoints pts)- | otherwise = printf "thickPolyline(%s, %s)" (showPoints pts) (showFloat w)-describePicture (Curve _ pts)- | haskellMode = printf "curve %s" (showPoints pts)- | otherwise = printf "curve(%s)" (showPoints pts)-describePicture (ThickCurve _ pts w)- | haskellMode = printf "thickCurve %s %s" (showFloat w) (showPoints pts)- | otherwise = printf "thickCurve(%s, %s)" (showPoints pts) (showFloat w)-describePicture (Sector _ b e r)- | haskellMode = printf "sector %s %s %s" (showFloat b) (showFloat e) (showFloat r)- | otherwise = printf "sector(%s°, %s°, %s)" (showFloat (180 * b / pi)) (showFloat (180 * e / pi)) (showFloat r)-describePicture (Arc _ b e r)- | haskellMode = printf "arc %s %s %s" (showFloat b) (showFloat e) (showFloat r)- | otherwise = printf "arc(%s°, %s°, %s)" (showFloat (180 * b / pi)) (showFloat (180 * e / pi)) (showFloat r)-describePicture (ThickArc _ b e r w)- | haskellMode = printf "thickArc %s %s %s %s" (showFloat w) (showFloat b) (showFloat e) (showFloat r)- | otherwise = printf "thickArc(%s°, %s°, %s, %s)" (showFloat (180 * b / pi)) (showFloat (180 * e / pi)) (showFloat r) (showFloat w)-describePicture (Lettering _ txt)- | haskellMode = printf "lettering %s" (show txt)- | otherwise = printf "lettering(%s)" (show txt)-describePicture (Blank _) = "blank"-describePicture (StyledLettering _ style font txt)- | haskellMode = printf "styledLettering %s %s %s" (showsPrec 10 style "") (showsPrec 10 font "") (show txt)- | otherwise = printf "styledLettering(%s, %s, %s)" (show txt) (show font) (show style)-describePicture (Color _ c _)- | haskellMode = printf "colored %s" (showColor c)- | otherwise = printf "colored(..., %s)" (showColor c)-describePicture (Translate _ x y _)- | haskellMode = printf "translated %s %s" (showFloat x) (showFloat y)- | otherwise = printf "translated(..., %s, %s)" (showFloat x) (showFloat y)-describePicture (Scale _ x y _)- | haskellMode = printf "scaled %s %s" (showFloat x) (showFloat y)- | otherwise = printf "scaled(..., %s, %s)" (showFloat x) (showFloat y)-describePicture (Rotate _ angle _)- | haskellMode = printf "rotated %s" (showFloat angle)- | otherwise = printf "rotated(..., %s°)" (showFloat (180 * angle / pi))-describePicture (Dilate _ k _)- | haskellMode = printf "dilated %s" (showFloat k)- | otherwise = printf "dilated(..., %s)" (showFloat k)-describePicture (Logo _) = "codeWorldLogo"-describePicture (CoordinatePlane _) = "coordinatePlane"-describePicture (Pictures _ _)- | haskellMode = "pictures"- | otherwise = "pictures(...)"-describePicture (PictureAnd _ _)- | haskellMode = "(&)"- | otherwise = "... & ..."--getPictureSrcLoc :: Picture -> Maybe SrcLoc-getPictureSrcLoc (SolidPolygon loc _) = loc-getPictureSrcLoc (SolidClosedCurve loc _) = loc-getPictureSrcLoc (Polygon loc _) = loc-getPictureSrcLoc (ThickPolygon loc _ _) = loc-getPictureSrcLoc (Rectangle loc _ _) = loc-getPictureSrcLoc (SolidRectangle loc _ _) = loc-getPictureSrcLoc (ThickRectangle loc _ _ _) = loc-getPictureSrcLoc (ClosedCurve loc _) = loc-getPictureSrcLoc (ThickClosedCurve loc _ _) = loc-getPictureSrcLoc (Circle loc _) = loc-getPictureSrcLoc (SolidCircle loc _) = loc-getPictureSrcLoc (ThickCircle loc _ _) = loc-getPictureSrcLoc (Polyline loc _) = loc-getPictureSrcLoc (ThickPolyline loc _ _) = loc-getPictureSrcLoc (Curve loc _) = loc-getPictureSrcLoc (ThickCurve loc _ _) = loc-getPictureSrcLoc (Sector loc _ _ _) = loc-getPictureSrcLoc (Arc loc _ _ _) = loc-getPictureSrcLoc (ThickArc loc _ _ _ _) = loc-getPictureSrcLoc (Lettering loc _) = loc-getPictureSrcLoc (Blank loc) = loc-getPictureSrcLoc (StyledLettering loc _ _ _) = loc-getPictureSrcLoc (Color loc _ _) = loc-getPictureSrcLoc (Translate loc _ _ _) = loc-getPictureSrcLoc (Scale loc _ _ _) = loc-getPictureSrcLoc (Dilate loc _ _) = loc-getPictureSrcLoc (Rotate loc _ _) = loc-getPictureSrcLoc (Logo loc) = loc-getPictureSrcLoc (CoordinatePlane loc) = loc-getPictureSrcLoc (Pictures loc _) = loc-getPictureSrcLoc (PictureAnd loc _) = loc---- If a picture is found, the result will include an array of the base picture--- and all transformations.-findTopShapeFromPoint :: Point -> Drawing -> IO (Maybe NodeId)-findTopShapeFromPoint (x, y) pic = do- buf <- Canvas.create 500 500- ctx <- Canvas.getContext buf- (found, node) <- runCanvasM ctx $- findTopShape (translateDS (10 - x / 25) (y / 25 - 10) initialDS)- pic- case found of- True -> return $ Just node- False -> return Nothing--drawFrame :: Drawing -> CanvasM ()-drawFrame drawing = do- CM.fillColor 255 255 255 1- CM.fillRect (-250) (-250) 500 500- drawDrawing initialDS drawing--withScreen :: Element -> ClientRect.ClientRect -> CanvasM a -> IO a-withScreen canvas rect action = do- cw <- ClientRect.getWidth rect- ch <- ClientRect.getHeight rect- ctx <- getCodeWorldContext (canvasFromElement canvas)- runCanvasM ctx $ CM.saveRestore $ do- CM.translate (realToFrac cw / 2) (realToFrac ch / 2)- CM.scale (realToFrac cw / 500) (-realToFrac ch / 500)- CM.lineWidth 0- CM.textCenter- CM.textMiddle- action--setCanvasSize :: Element -> Element -> IO ()-setCanvasSize target canvas = do- rect <- getBoundingClientRect canvas- cx <- ClientRect.getWidth rect- cy <- ClientRect.getHeight rect- setAttribute target ("width" :: JSString) (show (round cx))- setAttribute target ("height" :: JSString) (show (round cy))--#else------------------------------------------------------------------------------------- Stand-alone implementation of drawing--drawCodeWorldLogo ::- DrawState -> Int -> Int -> Int -> Int -> CanvasM ()-drawCodeWorldLogo ds x y w h = return ()--setupScreenContext :: (Int, Int) -> Canvas ()-setupScreenContext (cw, ch)- -- blank before transformation (canvas might be non-sqare)- = do- Canvas.fillStyle "white"- Canvas.fillRect (0, 0, fromIntegral cw, fromIntegral ch)- Canvas.translate (realToFrac cw / 2, realToFrac ch / 2)- let s = min (realToFrac cw / 500) (realToFrac ch / 500)- Canvas.scale (s, -s)- Canvas.lineWidth 0- Canvas.textAlign Canvas.CenterAnchor- Canvas.textBaseline Canvas.MiddleBaseline--type Port = Int--readPortFromEnv :: String -> Port -> IO Port-readPortFromEnv envName defaultPort = do- ms <- lookupEnv envName- return (fromMaybe defaultPort (ms >>= readMaybe))--runBlankCanvas :: (Canvas.DeviceContext -> IO ()) -> IO ()-runBlankCanvas act = do- port <- readPortFromEnv "CODEWORLD_API_PORT" 3000- let options =- (fromIntegral port)- { Canvas.events =- ["mousedown", "mouseup", "mousemove", "keydown", "keyup"]- }- putStrLn $ printf "Open me on http://127.0.0.1:%d/" (Canvas.port options)- Canvas.blankCanvas options $ \context -> do- putStrLn "Program is starting..."- act context--#endif------------------------------------------------------------------------------------- Common event handling and core interaction code--keyCodeToText :: Word -> Text-keyCodeToText n =- case n of- _- | n >= 47 && n <= 90 -> fromAscii n- _- | n >= 96 && n <= 105 -> fromNum (n - 96)- _- | n >= 112 && n <= 135 -> "F" <> fromNum (n - 111)- 3 -> "Cancel"- 6 -> "Help"- 8 -> "Backspace"- 9 -> "Tab"- 12 -> "5"- 13 -> "Enter"- 16 -> "Shift"- 17 -> "Ctrl"- 18 -> "Alt"- 19 -> "Break"- 20 -> "CapsLock"- 27 -> "Esc"- 32 -> " "- 33 -> "PageUp"- 34 -> "PageDown"- 35 -> "End"- 36 -> "Home"- 37 -> "Left"- 38 -> "Up"- 39 -> "Right"- 40 -> "Down"- 42 -> "*"- 43 -> "+"- 44 -> "PrintScreen"- 45 -> "Insert"- 46 -> "Delete"- 47 -> "Help"- 91 -> "OS"- 92 -> "OS"- 93 -> "ContextMenu"- 106 -> "*"- 107 -> "+"- 108 -> ","- 109 -> "-"- 110 -> "."- 111 -> "/"- 144 -> "NumLock"- 145 -> "ScrollLock"- 173 -> "-"- 186 -> ";"- 187 -> "="- 188 -> ","- 189 -> "-"- 190 -> "."- 191 -> "/"- 192 -> "`"- 193 -> "IntlRo"- 194 -> ","- 219 -> "["- 220 -> "\\"- 221 -> "]"- 222 -> "'"- 225 -> "AltGraph"- 255 -> "IntlYen"- _ -> "Unknown:" <> fromNum n- where- fromAscii n = singleton (chr (fromIntegral n))- fromNum n = pack (show (fromIntegral n))--isUniversallyConstant :: (a -> s -> s) -> s -> Bool-isUniversallyConstant f old =- unsafePerformIO $ falseOr $ do- oldName <- makeStableName $! old- genName <- makeStableName $! f undefined old- return (genName == oldName)- where- falseOr x = x `catch` \(e :: SomeException) -> return False--ifDifferent :: (s -> s) -> s -> Maybe s-ifDifferent f s0 = unsafePerformIO $ do- oldName <- makeStableName $! s0- newName <- makeStableName $! s1- if newName == oldName then return Nothing else return (Just s1)- where s1 = f s0--modifyMVarIfDifferent :: MVar s -> (s -> s) -> IO Bool-modifyMVarIfDifferent var f =- modifyMVar var $ \s0 -> do- case ifDifferent f s0 of- Nothing -> return (s0, False)- Just s1 -> return (s1, True)--data GameToken- = FullToken { tokenDeployHash :: Text- , tokenNumPlayers :: Int- , tokenInitial :: StaticKey- , tokenStep :: StaticKey- , tokenEvent :: StaticKey- , tokenDraw :: StaticKey }- | SteplessToken { tokenDeployHash :: Text- , tokenNumPlayers :: Int- , tokenInitial :: StaticKey- , tokenEvent :: StaticKey- , tokenDraw :: StaticKey }- | PartialToken { tokenDeployHash :: Text }- | NoToken- deriving (Generic)--deriving instance Generic Fingerprint--instance Serialize Fingerprint--instance Serialize GameToken--#ifdef ghcjs_HOST_OS------------------------------------------------------------------------------------- GHCJS event handling and core interaction code--getMousePos :: IsMouseEvent e => Element -> EventM w e Point-getMousePos canvas = do- (ix, iy) <- mouseClientXY- liftIO $ do- rect <- getBoundingClientRect canvas- cx <- ClientRect.getLeft rect- cy <- ClientRect.getTop rect- cw <- ClientRect.getWidth rect- ch <- ClientRect.getHeight rect- return- ( 20 * fromIntegral (ix - round cx) / realToFrac cw - 10- , 20 * fromIntegral (round cy - iy) / realToFrac cw + 10)--onEvents :: Element -> (Event -> IO ()) -> IO ()-onEvents canvas handler = do- Just window <- currentWindow- on window keyDown $ do- code <- uiKeyCode- let keyName = keyCodeToText code- when (keyName /= "") $ do- liftIO $ handler (KeyPress keyName)- preventDefault- stopPropagation- on window keyUp $ do- code <- uiKeyCode- let keyName = keyCodeToText code- when (keyName /= "") $ do- liftIO $ handler (KeyRelease keyName)- preventDefault- stopPropagation- on window mouseDown $ do- pos <- getMousePos canvas- liftIO $ handler (PointerPress pos)- on window mouseUp $ do- pos <- getMousePos canvas- liftIO $ handler (PointerRelease pos)- on window mouseMove $ do- pos <- getMousePos canvas- liftIO $ handler (PointerMovement pos)- return ()--encodeEvent :: (Timestamp, Maybe Event) -> String-encodeEvent = show--decodeEvent :: String -> Maybe (Timestamp, Maybe Event)-decodeEvent = readMaybe--data GameState s- = Main (UIState SMain)- | Connecting WS.WebSocket- (UIState SConnect)- | Waiting WS.WebSocket- GameId- PlayerId- (UIState SWait)- | Running WS.WebSocket- GameId- Timestamp- PlayerId- (Future s)--isRunning :: GameState s -> Bool-isRunning Running {} = True-isRunning _ = False--gameTime :: GameState s -> Timestamp -> Double-gameTime (Running _ _ tstart _ _) t = t - tstart-gameTime _ _ = 0---- It's worth trying to keep the canonical animation rate exactly representable--- as a float, to minimize the chance of divergence due to rounding error.-gameRate :: Double-gameRate = 1 / 16--gameStep :: (Double -> s -> s) -> Double -> GameState s -> GameState s-gameStep _ t (Main s) = Main (CUI.step t s)-gameStep _ t (Connecting ws s) = Connecting ws (CUI.step t s)-gameStep _ t (Waiting ws gid pid s) = Waiting ws gid pid (CUI.step t s)-gameStep step t (Running ws gid tstart pid s) =- Running ws gid tstart pid (currentTimePasses step gameRate (t - tstart) s)--gameDraw ::- (Double -> s -> s)- -> (PlayerId -> s -> Picture)- -> GameState s- -> Timestamp- -> Picture-gameDraw _ _ (Main s) _ = CUI.picture s-gameDraw _ _ (Connecting _ s) _ = CUI.picture s-gameDraw _ _ (Waiting _ _ _ s) _ = CUI.picture s-gameDraw step draw (Running _ _ tstart pid s) t =- draw pid (currentState step gameRate (t - tstart) s)--handleServerMessage ::- Int- -> (StdGen -> s)- -> (Double -> s -> s)- -> (PlayerId -> Event -> s -> s)- -> MVar (GameState s)- -> ServerMessage- -> IO ()-handleServerMessage numPlayers initial stepHandler eventHandler gsm sm = do- modifyMVar_ gsm $ \gs -> do- t <- getTime- case (sm, gs) of- (GameAborted, _) -> return initialGameState- (JoinedAs pid gid, Connecting ws s) ->- return (Waiting ws gid pid (CUI.startWaiting gid s))- (PlayersWaiting m n, Waiting ws gid pid s) ->- return (Waiting ws gid pid (CUI.updatePlayers n m s))- (Started, Waiting ws gid pid _) ->- return- (Running- ws- gid- t- pid- (initFuture (initial (mkStdGen (hash gid))) numPlayers))- (OutEvent pid eo, Running ws gid tstart mypid s) ->- case decodeEvent eo of- Just (t', event) ->- let ours = pid == mypid- func = eventHandler pid <$> event -- might be a ping (Nothing)- result- | ours = s -- we already took care of our events- | otherwise =- addEvent- stepHandler- gameRate- mypid- t'- func- s- in return (Running ws gid tstart mypid result)- Nothing -> return (Running ws gid tstart mypid s)- _ -> return gs- return ()--gameHandle ::- Int- -> (StdGen -> s)- -> (Double -> s -> s)- -> (PlayerId -> Event -> s -> s)- -> GameToken- -> MVar (GameState s)- -> Event- -> IO ()-gameHandle numPlayers initial stepHandler eventHandler token gsm event = do- gs <- takeMVar gsm- case gs of- Main s ->- case CUI.event event s of- ContinueMain s' -> do- putMVar gsm (Main s')- Create s' -> do- ws <-- connectToGameServer- (handleServerMessage- numPlayers- initial- stepHandler- eventHandler- gsm)- sendClientMessage ws (NewGame numPlayers (encode token))- putMVar gsm (Connecting ws s')- Join gid s' -> do- ws <-- connectToGameServer- (handleServerMessage- numPlayers- initial- stepHandler- eventHandler- gsm)- sendClientMessage ws (JoinGame gid (encode token))- putMVar gsm (Connecting ws s')- Connecting ws s ->- case CUI.event event s of- ContinueConnect s' -> do- putMVar gsm (Connecting ws s')- CancelConnect s' -> do- WS.close Nothing Nothing ws- putMVar gsm (Main s')- Waiting ws gid pid s ->- case CUI.event event s of- ContinueWait s' -> do- putMVar gsm (Waiting ws gid pid s')- CancelWait s' -> do- WS.close Nothing Nothing ws- putMVar gsm (Main s')- Running ws gid tstart pid f -> do- t <- getTime- let gameState0 = currentState stepHandler gameRate (t - tstart) f- let eventFun = eventHandler pid event- case ifDifferent eventFun gameState0 of- Nothing -> putMVar gsm gs- Just s1 -> do- sendClientMessage- ws- (InEvent (encodeEvent (gameTime gs t, Just event)))- let f1 =- addEvent- stepHandler- gameRate- pid- (t - tstart)- (Just eventFun)- f- putMVar gsm (Running ws gid tstart pid f1)--getWebSocketURL :: IO JSString-getWebSocketURL = do- loc <- Loc.getWindowLocation- proto <- Loc.getProtocol loc- hostname <- Loc.getHostname loc- let url =- case proto of- "http:" -> "ws://" <> hostname <> ":9160/gameserver"- "https:" -> "wss://" <> hostname <> "/gameserver"- _ -> error "Unrecognized protocol"- return url--connectToGameServer :: (ServerMessage -> IO ()) -> IO WS.WebSocket-connectToGameServer handleServerMessage = do- let handleWSRequest m = do- maybeSM <- decodeServerMessage m- case maybeSM of- Nothing -> return ()- Just sm -> handleServerMessage sm- wsURL <- getWebSocketURL- let req =- WS.WebSocketRequest- { url = wsURL- , protocols = []- , onClose = Just $ \_ -> handleServerMessage GameAborted- , onMessage = Just handleWSRequest- }- WS.connect req- where- decodeServerMessage :: WS.MessageEvent -> IO (Maybe ServerMessage)- decodeServerMessage m =- case WS.getData m of- WS.StringData str -> do- return $ readMaybe (Data.JSString.unpack str)- _ -> return Nothing- encodeClientMessage :: ClientMessage -> JSString- encodeClientMessage m = Data.JSString.pack (show m)--sendClientMessage :: WS.WebSocket -> ClientMessage -> IO ()-sendClientMessage ws msg = WS.send (encodeClientMessage msg) ws- where- encodeClientMessage :: ClientMessage -> JSString- encodeClientMessage m = Data.JSString.pack (show m)--initialGameState :: GameState s-initialGameState = Main CUI.initial--foreign import javascript unsafe "cw$deterministic_math();"- enableDeterministicMath :: IO ()--runGame ::- GameToken- -> Int- -> (StdGen -> s)- -> (Double -> s -> s)- -> (Int -> Event -> s -> s)- -> (Int -> s -> Picture)- -> IO ()-runGame token numPlayers initial stepHandler eventHandler drawHandler = do- enableDeterministicMath- let fullStepHandler dt = stepHandler dt . eventHandler (-1) (TimePassing dt)- showCanvas- Just window <- currentWindow- Just doc <- currentDocument- Just canvas <- getElementById doc ("screen" :: JSString)- offscreenCanvas <- Canvas.create 500 500- setCanvasSize canvas canvas- setCanvasSize (elementFromCanvas offscreenCanvas) canvas- on window resize $ do- liftIO $ setCanvasSize canvas canvas- liftIO $ setCanvasSize (elementFromCanvas offscreenCanvas) canvas- currentGameState <- newMVar initialGameState- onEvents canvas $- gameHandle- numPlayers- initial- fullStepHandler- eventHandler- token- currentGameState- screen <- getCodeWorldContext (canvasFromElement canvas)- let go t0 lastFrame = do- gs <- readMVar currentGameState- let pic = gameDraw fullStepHandler drawHandler gs t0- picFrame <- makeStableName $! pic- when (picFrame /= lastFrame) $ do- rect <- getBoundingClientRect canvas- withScreen (elementFromCanvas offscreenCanvas) rect $- drawFrame (pictureToDrawing pic)- rect <- getBoundingClientRect canvas- cw <- ClientRect.getWidth rect- ch <- ClientRect.getHeight rect- when (cw > 0 && ch > 0) $ canvasDrawImage- screen- (elementFromCanvas offscreenCanvas)- 0- 0- (round cw)- (round ch)- t1 <- nextFrame- modifyMVar_ currentGameState $ return . gameStep fullStepHandler t1- go t1 picFrame- t0 <- getTime- nullFrame <- makeStableName undefined- initialStateName <- makeStableName $! initialGameState- go t0 nullFrame--getDeployHash :: IO Text-getDeployHash = pFromJSVal <$> js_getDeployHash--foreign import javascript "/[&?]dhash=(.{22})/.exec(window.location.search)[1]"- js_getDeployHash :: IO JSVal--foreign import javascript "console.log($1);"- js_debugLog :: JSString -> IO ()--debugLog :: String -> IO ()-debugLog = js_debugLog . Data.JSString.pack--propagateErrors :: ThreadId -> IO () -> IO ()-propagateErrors tid action = action `catch` \ (e :: SomeException) -> throwTo tid e--run :: s- -> (Double -> s -> s)- -> (e -> s -> s)- -> (s -> Drawing)- -> (Double -> e)- -> IO (e -> IO (), IO s)-run initial stepHandler eventHandler drawHandler injectTime = do- let fullStepHandler dt = stepHandler dt . eventHandler (injectTime dt)- showCanvas- Just window <- currentWindow- Just doc <- currentDocument- Just canvas <- getElementById doc ("screen" :: JSString)- offscreenCanvas <- Canvas.create 500 500- setCanvasSize canvas canvas- setCanvasSize (elementFromCanvas offscreenCanvas) canvas- needsRedraw <- newMVar ()- on window resize $ void $ liftIO $ do- setCanvasSize canvas canvas- setCanvasSize (elementFromCanvas offscreenCanvas) canvas- tryPutMVar needsRedraw ()- currentState <- newMVar initial- eventHappened <- newMVar ()- screen <- getCodeWorldContext (canvasFromElement canvas)- let go t0 lastFrame lastStateName needsTime = do- pic <- drawHandler <$> readMVar currentState- picFrame <- makeStableName $! pic- when (picFrame /= lastFrame) $ do- rect <- getBoundingClientRect canvas- withScreen (elementFromCanvas offscreenCanvas) rect $- drawFrame pic- rect <- getBoundingClientRect canvas- cw <- ClientRect.getWidth rect- ch <- ClientRect.getHeight rect- when (cw > 0 && ch > 0) $ canvasDrawImage- screen- (elementFromCanvas offscreenCanvas)- 0- 0- (round cw)- (round ch)- t1 <-- if | needsTime ->- do t1 <- nextFrame- let dt = min (t1 - t0) 0.25- modifyMVarIfDifferent currentState (fullStepHandler dt)- return t1- | otherwise ->- do takeMVar eventHappened- getTime- nextState <- readMVar currentState- nextStateName <- makeStableName $! nextState- let nextNeedsTime =- nextStateName /= lastStateName ||- needsTime && not (isUniversallyConstant fullStepHandler nextState)- nextFrame <- tryTakeMVar needsRedraw >>= \case- Nothing -> return picFrame- Just () -> makeStableName undefined- go t1 nextFrame nextStateName nextNeedsTime- t0 <- getTime- nullFrame <- makeStableName undefined- initialStateName <- makeStableName $! initial- mainThread <- myThreadId- drawThread <- forkIO $ propagateErrors mainThread $- go t0 nullFrame initialStateName True- let sendEvent event = propagateErrors drawThread $ do- changed <-- modifyMVarIfDifferent currentState (eventHandler event)- when changed $ void $ tryPutMVar eventHappened ()- getState = readMVar currentState- return (sendEvent, getState)--data DebugState = DebugState- { debugStateActive :: Bool- , shapeHighlighted :: Maybe NodeId- , shapeSelected :: Maybe NodeId- }--data DebugEvent- = DebugStart- | DebugStop- | HighlightEvent (Maybe NodeId)- | SelectEvent (Maybe NodeId)--debugStateInit :: DebugState-debugStateInit = DebugState False Nothing Nothing--updateDebugState :: DebugEvent -> DebugState -> DebugState-updateDebugState DebugStart prev = DebugState True Nothing Nothing-updateDebugState DebugStop prev = DebugState False Nothing Nothing-updateDebugState (HighlightEvent n) prev =- case debugStateActive prev of- True -> prev {shapeHighlighted = n}- False -> DebugState False Nothing Nothing-updateDebugState (SelectEvent n) prev =- case debugStateActive prev of- True -> prev {shapeSelected = n}- False -> DebugState False Nothing Nothing--drawDebugState :: DebugState -> Drawing -> Drawing-drawDebugState state drawing =- case debugStateActive state of- True ->- highlightSelectShape- (shapeHighlighted state)- (shapeSelected state)- drawing- False -> drawing---- Utility functions that apply a function in either the left or right half of a--- tuple. Crucially, if the function preserves sharing on its side, then the--- wrapper also preserves sharing.-inLeft :: (a -> a) -> (a, b) -> (a, b)-inLeft f ab = unsafePerformIO $ do- let (a, b) = ab- aName <- makeStableName $! a- let a' = f a- aName' <- makeStableName $! a'- return $ if aName == aName' then ab else (a', b)--inRight :: (b -> b) -> (a, b) -> (a, b)-inRight f ab = unsafePerformIO $ do- let (a, b) = ab- bName <- makeStableName $! b- let b' = f b- bName' <- makeStableName $! b'- return $ if bName == bName' then ab else (a, b')--foreign import javascript interruptible "window.dummyVar = 0;"- waitForever :: IO ()---- Wraps the event and state from run so they can be paused by pressing the Inspect--- button.-runInspect :: - (Wrapped s -> [Control s])- -> s- -> (Double -> s -> s)- -> (Event -> s -> s)- -> (s -> Picture) - -> IO ()-runInspect controls initial stepHandler eventHandler drawHandler = do- Just window <- currentWindow- Just doc <- currentDocument- Just canvas <- getElementById doc ("screen" :: JSString)- let initialWrapper = (debugStateInit, wrappedInitial initial)- stepHandlerWrapper dt wrapper@(debugState, _) =- case debugStateActive debugState of- True -> wrapper- False -> inRight (wrappedStep stepHandler dt) wrapper- eventHandlerWrapper evt wrapper@(debugState, _) =- case (debugStateActive debugState, evt) of- (_, Left debugEvent) ->- inLeft (updateDebugState debugEvent) wrapper- (True, _) -> wrapper- (_, Right normalEvent) ->- inRight (wrappedEvent controls stepHandler eventHandler normalEvent) wrapper- drawHandlerWrapper (debugState, wrappedState) =- case debugStateActive debugState of- True -> drawDebugState debugState $ pictureToDrawing $ drawHandler (state wrappedState)- False -> pictureToDrawing (wrappedDraw controls drawHandler wrappedState)- drawPicHandler (debugState, wrappedState) =- drawHandler $ state wrappedState- (sendEvent, getState) <-- run- initialWrapper- stepHandlerWrapper- (\e w -> (eventHandlerWrapper e) w)- drawHandlerWrapper- (Right . TimePassing)- let pauseEvent True = sendEvent $ Left DebugStart- pauseEvent False = sendEvent $ Left DebugStop- highlightSelectEvent True n = sendEvent $ Left (HighlightEvent n)- highlightSelectEvent False n = sendEvent $ Left (SelectEvent n)- onEvents canvas (sendEvent . Right)- inspect (drawPicHandler <$> getState) pauseEvent highlightSelectEvent- waitForever---- Given a drawing, highlight the first node and select second node. Both recolor--- the nodes, but highlight also brings the node to the top.-highlightSelectShape :: Maybe NodeId -> Maybe NodeId -> Drawing -> Drawing-highlightSelectShape h s drawing- | isNothing s =- fromMaybe drawing $ do- h' <- h- hp <- piece h'- return $ hp <> drawing- | isNothing h =- fromMaybe drawing $ do- s' <- s- sp <- piece s'- replaceDrawNode s' sp drawing- | otherwise =- fromMaybe drawing $ do- h' <- h- s' <- s- hp <- piece h'- sp <- piece s'- replaced <- replaceDrawNode s' sp drawing- return $ hp <> replaced- where- piece n =- (\(node, ds) -> highlightDrawing ds node) <$> getDrawNode n drawing--highlightDrawing :: DrawState -> Drawing -> Drawing-highlightDrawing (a, b, c, d, e, f, _) drawing =- Transformation (\_ -> (a, b, c, d, e, f, Just col')) drawing- where- col' = RGBA 0 0 0 0.25--getDrawNode :: NodeId -> Drawing -> Maybe (Drawing, DrawState)-getDrawNode n _- | n < 0 = Nothing-getDrawNode n drawing = either Just (const Nothing) $ go initialDS n drawing- where- go ds 0 d = Left (d, ds)- go ds n (Shape _) = Right (n - 1)- go ds n (Transformation f dr) = go (f ds) (n - 1) dr- go ds n (Drawings []) = Right (n - 1)- go ds n (Drawings (dr:drs)) =- case go ds (n - 1) dr of- Left d -> Left d- Right n -> go ds (n + 1) $ Drawings drs--replaceDrawNode :: NodeId -> Drawing -> Drawing -> Maybe Drawing-replaceDrawNode n _ _- | n < 0 = Nothing-replaceDrawNode n with drawing = either Just (const Nothing) $ go n drawing- where- go :: Int -> Drawing -> Either Drawing Int- go 0 _ = Left with- go n (Shape _) = Right (n - 1)- go n (Transformation f d) = mapLeft (Transformation f) $ go (n - 1) d- go n (Drawings []) = Right (n - 1)- go n (Drawings (dr:drs)) =- case go (n - 1) dr of- Left d -> Left $ Drawings (d : drs)- Right m ->- mapLeft (\(Drawings qs) -> Drawings (dr : qs)) $- go (m + 1) $ Drawings drs- mapLeft :: (a -> b) -> Either a c -> Either b c- mapLeft f = either (Left . f) Right--#else--debugLog :: String -> IO ()-debugLog = putStrLn------------------------------------------------------------------------------------- Stand-Alone event handling and core interaction code--getMousePos :: (Int, Int) -> (Double, Double) -> (Double, Double)-getMousePos (w, h) (x, y) =- ((x - fromIntegral w / 2) / s, -(y - fromIntegral h / 2) / s)- where- s = min (realToFrac w / 20) (realToFrac h / 20)--toEvent :: (Int, Int) -> Canvas.Event -> Maybe Event-toEvent rect Canvas.Event {..}- | eType == "keydown"- , Just code <- eWhich = Just $ KeyPress (keyCodeToText (fromIntegral code))- | eType == "keyup"- , Just code <- eWhich =- Just $ KeyRelease (keyCodeToText (fromIntegral code))- | eType == "mousedown"- , Just pos <- getMousePos rect <$> ePageXY = Just $ PointerPress pos- | eType == "mouseup"- , Just pos <- getMousePos rect <$> ePageXY = Just $ PointerRelease pos- | eType == "mousemove"- , Just pos <- getMousePos rect <$> ePageXY = Just $ PointerMovement pos- | otherwise = Nothing--onEvents :: Canvas.DeviceContext -> (Int, Int) -> (Event -> IO ()) -> IO ()-onEvents context rect handler =- void $- forkIO $- forever $ do- maybeEvent <- toEvent rect <$> Canvas.wait context- forM_ maybeEvent handler--run :: s -> (Double -> s -> s) -> (Event -> s -> s) -> (s -> Picture) -> IO ()-run initial stepHandler eventHandler drawHandler =- runBlankCanvas $ \context -> do- let fullStepHandler dt = stepHandler dt . eventHandler (TimePassing dt)- let rect = (Canvas.width context, Canvas.height context)- offscreenCanvas <- Canvas.send context $ Canvas.newCanvas rect- currentState <- newMVar initial- eventHappened <- newMVar ()- onEvents context rect $ \event -> do- modifyMVar_ currentState (return . eventHandler event)- tryPutMVar eventHappened ()- return ()- let go t0 lastFrame lastStateName needsTime = do- pic <- drawHandler <$> readMVar currentState- picFrame <- makeStableName $! pic- when (picFrame /= lastFrame) $- Canvas.send context $ do- Canvas.with offscreenCanvas $- Canvas.saveRestore $ do- setupScreenContext rect- drawDrawing initialDS (pictureToDrawing pic)- Canvas.drawImageAt (offscreenCanvas, 0, 0)- t1 <-- if | needsTime ->- do tn <- getCurrentTime- threadDelay $- max- 0- (50000 -- round ((tn `diffUTCTime` t0) * 1000000))- t1 <- getCurrentTime- let dt = realToFrac (t1 `diffUTCTime` t0)- modifyMVar_ currentState (return . fullStepHandler dt)- return t1- | otherwise ->- do takeMVar eventHappened- getCurrentTime- nextState <- readMVar currentState- nextStateName <- makeStableName $! nextState- let nextNeedsTime =- nextStateName /= lastStateName ||- needsTime && not (isUniversallyConstant fullStepHandler nextState)- go t1 picFrame nextStateName nextNeedsTime- t0 <- getCurrentTime- nullFrame <- makeStableName undefined- initialStateName <- makeStableName $! initial- go t0 nullFrame initialStateName True--runInspect :: - (Wrapped s -> [Control s])- -> s- -> (Double -> s -> s)- -> (Event -> s -> s)- -> (s -> Picture) - -> IO ()-runInspect controls initial stepHandler eventHandler drawHandler =- run (wrappedInitial initial)- (wrappedStep stepHandler)- (wrappedEvent controls stepHandler eventHandler)- (wrappedDraw controls drawHandler)--getDeployHash :: IO Text-getDeployHash = error "game API unimplemented in stand-alone interface mode"--runGame ::- GameToken- -> Int- -> (StdGen -> s)- -> (Double -> s -> s)- -> (Int -> Event -> s -> s)- -> (Int -> s -> Picture)- -> IO ()-runGame = error "game API unimplemented in stand-alone interface mode"--#endif------------------------------------------------------------------------------------- Common code for game interface--groupActivityOf numPlayers initial event draw = do- dhash <- getDeployHash- let token =- SteplessToken- { tokenDeployHash = dhash- , tokenNumPlayers = numPlayers- , tokenInitial = staticKey initial- , tokenEvent = staticKey event- , tokenDraw = staticKey draw- }- runGame- token- numPlayers- (deRefStaticPtr initial)- (const id)- (deRefStaticPtr event)- (deRefStaticPtr draw)--unsafeGroupActivityOf numPlayers initial event draw =- unsafeCollaborationOf numPlayers initial (const id) event draw--unsafeCollaborationOf numPlayers initial step event draw = do- dhash <- getDeployHash- let token = PartialToken dhash- runGame token numPlayers initial step event draw- where- token = NoToken--collaborationOf numPlayers initial step event draw = do- dhash <- getDeployHash- let token =- FullToken- { tokenDeployHash = dhash- , tokenNumPlayers = numPlayers- , tokenInitial = staticKey initial- , tokenStep = staticKey step- , tokenEvent = staticKey event- , tokenDraw = staticKey draw- }- runGame- token- numPlayers- (deRefStaticPtr initial)- (deRefStaticPtr step)- (deRefStaticPtr event)- (deRefStaticPtr draw)------------------------------------------------------------------------------------- Common code for activity, interaction, animation and simulation interfaces--activityOf initial change picture =- interactionOf initial (const id) change picture--interactionOf = runInspect (const [])--data Wrapped a = Wrapped- { state :: a- , playbackSpeed :: Double- , lastInteractionTime :: Double- , zoomFactor :: Double- , panCenter :: Point- , panDraggingAnchor :: Maybe Point- , isDraggingSpeed :: Bool- , isDraggingHistory :: Bool- , isDraggingZoom :: Bool- } deriving (Show, Functor)--data Control :: * -> * where- PlayButton :: Point -> Control a- PauseButton :: Point -> Control a- StepButton :: Point -> Control a- RestartButton :: Point -> Control Double- ZoomInButton :: Point -> Control a- ZoomOutButton :: Point -> Control a- PanningLayer :: Control a- ResetViewButton :: Point -> Control a- FastForwardButton :: Point -> Control a- StartOverButton :: Point -> Control ([a], [a])- BackButton :: Point -> Control Double- TimeLabel :: Point -> Control Double- SpeedSlider :: Point -> Control a- ZoomSlider :: Point -> Control a- UndoButton :: Point -> Control ([a], [a])- RedoButton :: Point -> Control ([a], [a])- HistorySlider :: Point -> Control ([a], [a])--wrappedInitial :: a -> Wrapped a-wrappedInitial w = Wrapped { - state = w,- playbackSpeed = 1,- lastInteractionTime = 1000,- zoomFactor = 1,- panCenter = (0,0),- panDraggingAnchor = Nothing,- isDraggingSpeed = False,- isDraggingHistory = False,- isDraggingZoom = False- }--toState :: (a -> a) -> (Wrapped a -> Wrapped a)-toState f w = case ifDifferent f (state w) of- Just newState -> w { state = newState }- _ -> w--wrappedStep :: (Double -> a -> a) -> Double -> Wrapped a -> Wrapped a-wrappedStep f dt w = updateInteractionTime (updateState w)- where updateInteractionTime w- | lastInteractionTime w > 5 = w- | otherwise = w { lastInteractionTime = lastInteractionTime w + dt }- updateState w- | playbackSpeed w == 0 = w- | otherwise = toState (f (dt * playbackSpeed w)) w--reportDiff :: String -> (a -> a) -> (a -> a)-reportDiff msg f x = unsafePerformIO $ do- a <- makeStableName $! x- b <- makeStableName $! r- when (a /= b) $ debugLog $ msg ++ ": reportDiff found a diff"- return r- where r = f x--wrappedEvent :: forall a . - (Wrapped a -> [Control a])- -> (Double -> a -> a)- -> (Event -> a -> a)- -> Event- -> Wrapped a- -> Wrapped a-wrappedEvent _ _ eventHandler (TimePassing dt) w- | playbackSpeed w == 0 = w- | otherwise = toState (eventHandler (TimePassing (dt * playbackSpeed w))) w-wrappedEvent ctrls stepHandler eventHandler event w- | playbackSpeed w == 0 || handled = afterControls {lastInteractionTime = 0}- | otherwise = toState (eventHandler (adaptEvent event)) afterControls {lastInteractionTime = 0}- where- (afterControls, handled) = foldr stepFunction (w, False) (ctrls w)-- stepFunction control (world, True) = (world, True)- stepFunction control (world, False) = handleControl fullStep event control world-- fullStep dt = stepHandler dt . eventHandler (TimePassing dt)-- adaptEvent (PointerMovement p) = PointerMovement (adaptPoint p)- adaptEvent (PointerPress p) = PointerPress (adaptPoint p)- adaptEvent (PointerRelease p) = PointerRelease (adaptPoint p)- adaptEvent other = other-- adaptPoint (x, y) = (x / k - dx, y / k - dy)-- (dx, dy) = panCenter w- k = zoomFactor w--scaleRange :: (Double, Double) -> (Double, Double) -> Double -> Double-scaleRange (a1, b1) (a2, b2) x = min b2 $ max a2 $ (x - a1) / (b1 - a1) * (b2 - a2) + a2--snapSlider :: Double -> [Double] -> Double -> Double-snapSlider eps targets val = foldr snap val targets- where snap t v | abs (t - v) < eps = t- | otherwise = v--xToPlaybackSpeed :: Double -> Double-xToPlaybackSpeed x = snapSlider 0.2 [1..4] $ scaleRange (-1.4, 1.4) (0, 5) x--playbackSpeedToX :: Double -> Double-playbackSpeedToX s = scaleRange (0, 5) (-1.4, 1.4) s--zoomIncrement = 8 ** (1/10)--yToZoomFactor :: Double -> Double-yToZoomFactor y = zoomIncrement ** (scaleRange (-1.4, 1.4) (-10, 10) y)--zoomFactorToY :: Double -> Double-zoomFactorToY z = scaleRange (-10, 10) (-1.4, 1.4) (logBase zoomIncrement z)--handleControl ::- (Double -> a -> a) -> Event -> Control a -> Wrapped a -> (Wrapped a, Bool)-handleControl _ (PointerPress (x, y)) (RestartButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {state = 0}, True)-handleControl _ (PointerPress (x, y)) (StartOverButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (fmap f w, True)- where- f (past, future) = let x:xs = reverse past in ([x], xs ++ future)-handleControl _ (PointerPress (x, y)) (PlayButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {playbackSpeed = 1}, True)-handleControl _ (PointerPress (x, y)) (PauseButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {playbackSpeed = 0}, True)-handleControl _ (PointerPress (x, y)) (FastForwardButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {playbackSpeed = min 5 $ max 2 $ playbackSpeed w + 1}, True)-handleControl _ (PointerPress (x, y)) (ZoomInButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {zoomFactor = min (zoomIncrement ** 10) (zoomFactor w * zoomIncrement)}, True)-handleControl _ (PointerPress (x, y)) (ZoomOutButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {zoomFactor = max (zoomIncrement ** (-10)) (zoomFactor w / zoomIncrement)}, True)-handleControl _ (PointerPress (x, y)) (ResetViewButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {zoomFactor = 1, panCenter = (0, 0)}, True)-handleControl _ (PointerPress (x,y)) (BackButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 =- (w {state = max 0 (state w - 0.1)}, True)-handleControl _ (PointerPress (x,y)) (UndoButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 =- (fmap (\(x:xs, ys) -> (xs, x:ys)) w, True)-handleControl _ (PointerPress (x,y)) (RedoButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 =- (fmap (\(xs, y:ys) -> (y:xs, ys)) w, True)-handleControl f (PointerPress (x, y)) (StepButton (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {state = f 0.1 (state w)}, True)-handleControl _ (PointerPress (x, y)) (SpeedSlider (cx, cy)) w- | abs (x - cx) < 1.5 && abs (y - cy) < 0.4 = - (w {playbackSpeed = xToPlaybackSpeed (x - cx), isDraggingSpeed = True}, True)-handleControl _ (PointerMovement (x, y)) (SpeedSlider (cx, cy)) w- | isDraggingSpeed w = (w {playbackSpeed = xToPlaybackSpeed (x - cx)}, True)-handleControl _ (PointerRelease (x, y)) (SpeedSlider (cx, cy)) w- | isDraggingSpeed w = (w {playbackSpeed = xToPlaybackSpeed (x - cx), isDraggingSpeed = False}, True)-handleControl _ (PointerPress (x, y)) (ZoomSlider (cx, cy)) w- | abs (x - cx) < 0.4 && abs (y - cy) < 1.5 = - (w {zoomFactor = yToZoomFactor (y - cy), isDraggingZoom = True}, True)-handleControl _ (PointerMovement (x, y)) (ZoomSlider (cx, cy)) w- | isDraggingZoom w = (w {zoomFactor = yToZoomFactor (y - cy)}, True)-handleControl _ (PointerRelease (x, y)) (ZoomSlider (cx, cy)) w- | isDraggingZoom w = (w {zoomFactor = yToZoomFactor (y - cy), isDraggingZoom = False}, True)-handleControl _ (PointerPress (x, y)) (HistorySlider (cx, cy)) w- | abs (x - cx) < 2.5 && abs (y - cy) < 0.4 = - (travelToTime (x - cx) <$> w {isDraggingHistory = True}, True)-handleControl _ (PointerMovement (x, y)) (HistorySlider (cx, cy)) w- | isDraggingHistory w = (travelToTime (x - cx) <$> w, True)-handleControl _ (PointerRelease (x, y)) (HistorySlider (cx, cy)) w- | isDraggingHistory w = (travelToTime (x - cx) <$> w {isDraggingHistory = False}, True)-handleControl _ (PointerPress (x, y)) PanningLayer w =- (w {panDraggingAnchor = Just (x, y)}, True)-handleControl _ (PointerMovement (x, y)) PanningLayer w- | Just (ax, ay) <- panDraggingAnchor w- , (px, py) <- panCenter w- = (w { panCenter = (px + (x - ax) / zoomFactor w, py + (y - ay) / zoomFactor w),- panDraggingAnchor = Just (x, y)- }, True)-handleControl _ (PointerRelease (x, y)) PanningLayer w- | Just (ax, ay) <- panDraggingAnchor w = (w {panDraggingAnchor = Nothing}, True)-handleControl _ _ _ w = (w, False)--travelToTime :: Double -> ([s],[s]) -> ([s],[s]) -travelToTime t (past, future)- | n == 1 = (past, future)- | otherwise = go past future (n1 - desiredN1)- where n1 = length past- n2 = length future- n = n1 + n2- desiredN1 = round (scaleRange (-2.4, 2.4) (1, fromIntegral n) t)- go past future diff- | diff > 0 = go (tail past) (head past : future) (diff - 1)- | diff < 0 = go (head future : past) (tail future) (diff + 1)- | otherwise = (past, future)--wrappedDraw ::- (Wrapped a -> [Control a]) -> (a -> Picture) -> Wrapped a -> Picture-wrappedDraw ctrls f w = drawControlPanel ctrls w <> dilated k (translated dx dy (f (state w)))- where (dx, dy) = panCenter w- k = zoomFactor w--drawControlPanel :: (Wrapped a -> [Control a]) -> Wrapped a -> Picture-drawControlPanel ctrls w- | alpha > 0 = pictures [drawControl w alpha c | c <- ctrls w]- | otherwise = blank- where- alpha- | lastInteractionTime w < 4.5 = 1- | lastInteractionTime w < 5.0 = 10 - 2 * lastInteractionTime w- | otherwise = 0--drawControl :: Wrapped a -> Double -> Control a -> Picture-drawControl _ alpha (RestartButton (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (thickArc 0.1 (pi / 6) (11 * pi / 6) 0.2 <>- translated 0.173 (-0.1) (solidRectangle 0.17 0.17)) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl _ alpha (StartOverButton (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (thickArc 0.1 (pi / 6) (11 * pi / 6) 0.2 <>- translated 0.173 (-0.1) (solidRectangle 0.17 0.17)) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl _ alpha (PlayButton (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (solidPolygon [(-0.2, 0.25), (-0.2, -0.25), (0.2, 0)]) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl _ alpha (PauseButton (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (translated (-0.15) 0 (solidRectangle 0.2 0.6) <>- translated 0.15 0 (solidRectangle 0.2 0.6)) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl _ alpha (FastForwardButton (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (solidPolygon [(-0.3, 0.25), (-0.3, -0.25), (-0.05, 0)] <>- solidPolygon [(0.05, 0.25), (0.05, -0.25), (0.3, 0)]) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl _ alpha (ZoomInButton (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (translated (-0.05) (0.05) (- thickCircle 0.1 0.22 <>- solidRectangle 0.06 0.25 <>- solidRectangle 0.25 0.06 <>- rotated (-pi / 4) (translated 0.35 0 (solidRectangle 0.2 0.1))- )) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl _ alpha (ZoomOutButton (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (translated (-0.05) (0.05) (- thickCircle 0.1 0.22 <>- solidRectangle 0.25 0.06 <>- rotated (-pi / 4) (translated 0.35 0 (solidRectangle 0.2 0.1))- )) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl _ _ PanningLayer = blank-drawControl _ alpha (ResetViewButton (x,y)) = translated x y p- where- p =- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.7 0.2) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.2 0.7) <>- colored (RGBA 0.0 0.0 0.0 alpha) (thickRectangle 0.1 0.5 0.5) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl _ alpha (BackButton (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (translated 0.15 0 (solidRectangle 0.2 0.5) <>- solidPolygon [(-0.05, 0.25), (-0.05, -0.25), (-0.3, 0)]) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl _ alpha (UndoButton (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (translated 0.15 0 (solidRectangle 0.2 0.5) <>- solidPolygon [(-0.05, 0.25), (-0.05, -0.25), (-0.3, 0)]) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl _ alpha (StepButton (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (translated (-0.15) 0 (solidRectangle 0.2 0.5) <>- solidPolygon [(0.05, 0.25), (0.05, -0.25), (0.3, 0)]) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl _ alpha (RedoButton (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (translated (-0.15) 0 (solidRectangle 0.2 0.5) <>- solidPolygon [(0.05, 0.25), (0.05, -0.25), (0.3, 0)]) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)-drawControl w alpha (TimeLabel (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (scaled 0.5 0.5 $ lettering (pack (showFFloatAlt (Just 4) (state w) "s"))) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 3.0 0.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 3.0 0.8)-drawControl w alpha (SpeedSlider (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (translated xoff 0.75 $ scaled 0.5 0.5 $- lettering (pack (showFFloatAlt (Just 2) (playbackSpeed w) "x"))) <>- colored (RGBA 0 0 0 alpha) (translated xoff 0 (solidRectangle 0.2 0.8)) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 2.8 0.25) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 2.8 0.25)- xoff = playbackSpeedToX (playbackSpeed w)-drawControl w alpha (ZoomSlider (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (translated (-1.1) yoff $ scaled 0.5 0.5 $- lettering (pack (show (round (zoomFactor w * 100) :: Int) ++ "%"))) <>- colored (RGBA 0 0 0 alpha) (translated 0 yoff (solidRectangle 0.8 0.2)) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.25 2.8) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.25 2.8)- yoff = zoomFactorToY (zoomFactor w)-drawControl w alpha (HistorySlider (x,y)) = translated x y p- where- p =- colored- (RGBA 0 0 0 alpha)- (translated xoff 0.75 $ scaled 0.5 0.5 $- lettering (pack (show n1 ++ "/" ++ show (n1 + n2)))) <>- colored (RGBA 0.0 0.0 0.0 alpha) (translated xoff 0 (solidRectangle 0.2 0.8)) <>- colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 4.8 0.25) <>- colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 4.8 0.25)- xoff | n < 2 = 2.4- | otherwise = scaleRange (1, fromIntegral n) (-2.4, 2.4) (fromIntegral n1)- n1 = length (fst (state w))- n2 = length (snd (state w))- n = n1 + n2--drawingControls :: Wrapped () -> [Control ()]-drawingControls w- | lastInteractionTime w > 5 = []- | otherwise = commonControls ++ resetViewButton- where- commonControls = [- PanningLayer,- ZoomInButton (9, -4),- ZoomOutButton (9, -8),- ZoomSlider (9, -6)- ]- resetViewButton- | zoomFactor w /= 1 || panCenter w /= (0,0) = [ResetViewButton (9, -3)]- | otherwise = []--drawingOf pic = runInspect drawingControls () (\_ _ -> ()) (\_ _ -> ()) (const pic)--animationControls :: Wrapped Double -> [Control Double]-animationControls w- | lastInteractionTime w > 5 = []- | otherwise = commonControls ++ pauseDependentControls ++- backButton ++ resetViewButton- where- commonControls = [- PanningLayer,- RestartButton (-9, -9),- TimeLabel (8, -9),- SpeedSlider (-3, -9),- FastForwardButton (-1, -9),- ZoomInButton (9, -4),- ZoomOutButton (9, -8),- ZoomSlider (9, -6)- ]- pauseDependentControls- | playbackSpeed w == 0 = [PlayButton (-8, -9), StepButton (-6, -9)]- | otherwise = [PauseButton (-8, -9)]- backButton- | playbackSpeed w == 0 && state w > 0 = [BackButton (-7, -9)]- | otherwise = []- resetViewButton- | zoomFactor w /= 1 || panCenter w /= (0,0) = [ResetViewButton (9, -3)]- | otherwise = []--animationOf f = runInspect animationControls 0 (+) (\_ r -> r) f--simulationControls :: Wrapped w -> [Control w]-simulationControls w- | lastInteractionTime w > 5 = []- | otherwise = commonControls ++ pauseDependentControls ++ resetViewButton- where- commonControls = [- PanningLayer,- FastForwardButton (-4, -9),- SpeedSlider (-6, -9),- ZoomInButton (9, -4),- ZoomOutButton (9, -8),- ZoomSlider (9, -6)- ]- pauseDependentControls- | playbackSpeed w == 0 = [PlayButton (-8, -9), StepButton (-2, -9)]- | otherwise = [PauseButton (-8, -9)]- resetViewButton- | zoomFactor w /= 1 || panCenter w /= (0,0) = [ResetViewButton (9, -3)]- | otherwise = []--statefulDebugControls :: Wrapped ([w],[w]) -> [Control ([w],[w])]-statefulDebugControls w- | lastInteractionTime w > 5 = []- | otherwise = panningLayer ++ pauseDependentControls ++ commonControls ++- resetViewButton- where - hasHistory = not (null (tail (fst (state w))))- hasFuture = not (null (snd (state w)))- advance | hasFuture = [RedoButton (6, -9)]- | otherwise = [StepButton (6, -9)]- regress | hasHistory = [UndoButton (0, -9)]- | otherwise = []- commonControls = [- StartOverButton (-1, -9),- FastForwardButton (-4, -9),- SpeedSlider (-6, -9),- ZoomInButton (9, -4),- ZoomOutButton (9, -8),- ZoomSlider (9, -6)- ]- pauseDependentControls- | playbackSpeed w == 0 = - [PlayButton (-8, -9), HistorySlider (3, -9)] ++ advance ++ regress- | otherwise = [PauseButton (-8, -9)]- resetViewButton- | zoomFactor w /= 1 || panCenter w /= (0,0) = [ResetViewButton (9, -3)]- | otherwise = []- panningLayer - | playbackSpeed w == 0 = [PanningLayer]- | otherwise = []--simulationOf initial step draw =- runInspect simulationControls initial step (\_ r -> r) draw--prependIfChanged :: (a -> a) -> ([a],[a]) -> ([a],[a])-prependIfChanged f (x:xs, ys) =- case x `seq` x' `seq` (reallyUnsafePtrEquality# x x') of- 0# -> (x' : x : xs, [])- _ -> (x : xs, ys)- where x' = f x--debugSimulationOf initial simStep simDraw =- runInspect statefulDebugControls ([initial],[]) step (\_ r -> r) draw- where- step dt = prependIfChanged (simStep dt)- draw (x:_, _) = simDraw x--debugInteractionOf initial baseStep baseEvent baseDraw = - runInspect statefulDebugControls ([initial], []) step event draw - where- step dt = prependIfChanged (baseStep dt)- event e = prependIfChanged (baseEvent e)- draw (x:_, _) = baseDraw x--debugActivityOf initial change picture =- debugInteractionOf initial (const id) change picture--trace msg x = unsafePerformIO $ do- hPutStrLn stderr (T.unpack msg)- return x+{-# OPTIONS_GHC -Wno-name-shadowing -Wno-orphans -Wno-unticked-promoted-constructors #-}++{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE JavaScriptFFI #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternGuards #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE RecursiveDo #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE UndecidableInstances #-}++{-+ Copyright 2019 The CodeWorld Authors. All rights reserved.++ Licensed under the Apache License, Version 2.0 (the "License");+ you may not use this file except in compliance with the License.+ You may obtain a copy of the License at++ http://www.apache.org/licenses/LICENSE-2.0++ Unless required by applicable law or agreed to in writing, software+ distributed under the License is distributed on an "AS IS" BASIS,+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+ See the License for the specific language governing permissions and+ limitations under the License.+-}+module CodeWorld.Driver where++import qualified CodeWorld.CanvasM as CM+import CodeWorld.Color+import CodeWorld.DrawState+import CodeWorld.Event+import CodeWorld.Picture+import Control.Concurrent+import Control.Exception+import Control.Monad+import Control.Monad.Fix+import Control.Monad.Loops+import Control.Monad.Reader+import Control.Monad.Ref+import Data.Bool+import Data.Char (chr)+import Data.Dependent.Sum+import Data.IORef+import Data.List (zip4, intercalate)+import Data.Maybe+import Data.Serialize+import Data.Serialize.Text ()+import Data.Text (Text)+import qualified Data.Text as T+import GHC.Fingerprint.Type+import GHC.Generics+import GHC.Stack+import GHC.StaticPtr+import Numeric (showFFloatAlt)+import qualified Reflex as R+import qualified Reflex.Host.Class as R+import System.IO.Unsafe+import System.Mem.StableName+import System.Random+import Text.Printf+import Text.Read++#ifdef ghcjs_HOST_OS++import CodeWorld.CanvasM (MonadCanvas, CanvasM, runCanvasM)+import CodeWorld.CollaborationUI (SetupPhase(..), Step(..), UIState)+import qualified CodeWorld.CollaborationUI as CUI+import CodeWorld.Message+import CodeWorld.Prediction+import Control.DeepSeq+import Control.Monad.Identity+import qualified Control.Monad.Trans.State as State+import Data.Aeson (ToJSON(..), (.=), object)+import Data.Hashable+import qualified Data.JSString+import qualified GHCJS.DOM.ClientRect as ClientRect+import GHCJS.Concurrent (withoutPreemption)+import GHCJS.DOM+import GHCJS.DOM.Element+import GHCJS.DOM.EventM+import GHCJS.DOM.GlobalEventHandlers hiding (error, keyPress)+import GHCJS.DOM.KeyboardEvent+import GHCJS.DOM.MouseEvent+import GHCJS.DOM.NonElementParentNode+import GHCJS.DOM.Types (Window, Element, unElement)+import GHCJS.Foreign.Callback+import GHCJS.Marshal+import GHCJS.Marshal.Pure+import GHCJS.Types+import JavaScript.Object+import JavaScript.Web.AnimationFrame+import qualified JavaScript.Web.Canvas as Canvas+import qualified JavaScript.Web.Canvas.Internal as Canvas+import qualified JavaScript.Web.Location as Loc+import qualified JavaScript.Web.MessageEvent as WS+import qualified JavaScript.Web.Performance as Performance+import qualified JavaScript.Web.WebSocket as WS+import Unsafe.Coerce++#else++import CodeWorld.CanvasM (MonadCanvas, runCanvasM)+import Data.Time.Clock+import qualified Graphics.Blank as Canvas+import System.Environment++#endif++-- | Applies the affine transformation from the DrawState and prepares to draw+-- with it. This does not set the color at the same time, because different+-- pictures need to apply the color, if any, in different ways, often outside of+-- the action that sets up the geometry.+withDS :: MonadCanvas m => DrawState -> m a -> m a+withDS (DrawState (AffineTransformation ta tb tc td te tf) _col) action =+ CM.saveRestore $ do+ CM.transform ta tb tc td te tf+ CM.beginPath+ action++setColor :: MonadCanvas m => Color -> m ()+setColor (RGBA r g b a) = do+ CM.strokeColor+ (round $ r * 255)+ (round $ g * 255)+ (round $ b * 255)+ a+ CM.fillColor+ (round $ r * 255)+ (round $ g * 255)+ (round $ b * 255)+ a++applyColor :: MonadCanvas m => DrawState -> m ()+applyColor ds = case getColorDS ds of+ Nothing -> setColor (RGBA 0 0 0 1)+ Just c -> setColor c++-- | A slower way to draw a picture, which has some useful properties. It+-- can draw images in non-standard colors, and apply transparent colors+-- properly to overlapping compositions of basic shapes. There must be a+-- color in the DrawState.+viaOffscreen :: MonadCanvas m => Color -> (Color -> m ()) -> m ()+viaOffscreen (RGBA r g b a) pic = do+ w <- CM.getScreenWidth+ h <- CM.getScreenHeight+ img <- CM.newImage (round w) (round h)+ CM.withImage img $ do+ setupScreenContext (round w) (round h)+ pic (RGBA r g b 1)+ CM.saveRestore $ do+ px <- pixelSize+ CM.scale px (-px)+ CM.globalAlpha a+ CM.drawImage img (round (-w/2)) (round (-h/2)) (round w) (round h)++followPath :: MonadCanvas m => [Point] -> Bool -> Bool -> m ()+followPath [] _ _ = return ()+followPath [_] _ _ = return ()+followPath ((sx, sy):ps) closed False = do+ CM.moveTo (sx, sy)+ forM_ ps $ \(x, y) -> CM.lineTo (x, y)+ when closed $ CM.closePath+followPath [p1, p2] False True = followPath [p1, p2] False False+followPath ps False True = do+ let [p1@(x1, y1), p2@(x2, y2), p3@(x3, y3)] = take 3 ps+ dprev = euclideanDistance p1 p2+ dnext = euclideanDistance p2 p3+ p = dprev / (dprev + dnext)+ cx = x2 + p * (x1 - x3) / 2+ cy = y2 + p * (y1 - y3) / 2+ CM.moveTo (x1, y1)+ CM.quadraticCurveTo (cx, cy) (x2, y2)+ forM_ (zip4 ps (tail ps) (tail $ tail ps) (tail $ tail $ tail ps)) $ \(p1@(x1, y1), p2@(x2, y2), p3@(x3, y3), p4@(x4, y4)) -> do+ let dp = euclideanDistance p1 p2+ d1 = euclideanDistance p2 p3+ d2 = euclideanDistance p3 p4+ p = d1 / (d1 + d2)+ r = d1 / (dp + d1)+ cx1 = x2 + r * (x3 - x1) / 2+ cy1 = y2 + r * (y3 - y1) / 2+ cx2 = x3 + p * (x2 - x4) / 2+ cy2 = y3 + p * (y2 - y4) / 2+ CM.bezierCurveTo+ (cx1, cy1)+ (cx2, cy2)+ (x3, y3)+ let [p1@(x1, y1), p2@(x2, y2), p3@(x3, y3)] = reverse $ take 3 $ reverse ps+ dp = euclideanDistance p1 p2+ d1 = euclideanDistance p2 p3+ r = d1 / (dp + d1)+ cx = x2 + r * (x3 - x1) / 2+ cy = y2 + r * (y3 - y1) / 2+ CM.quadraticCurveTo (cx, cy) (x3, y3)+followPath ps@(_:(sx, sy):_) True True = do+ CM.moveTo (sx, sy)+ let rep = cycle ps+ forM_ (zip4 ps (tail rep) (tail $ tail rep) (tail $ tail $ tail rep)) $ \(p1@(x1, y1), p2@(x2, y2), p3@(x3, y3), p4@(x4, y4)) -> do+ let dp = euclideanDistance p1 p2+ d1 = euclideanDistance p2 p3+ d2 = euclideanDistance p3 p4+ p = d1 / (d1 + d2)+ r = d1 / (dp + d1)+ cx1 = x2 + r * (x3 - x1) / 2+ cy1 = y2 + r * (y3 - y1) / 2+ cx2 = x3 + p * (x2 - x4) / 2+ cy2 = y3 + p * (y2 - y4) / 2+ CM.bezierCurveTo+ (cx1, cy1)+ (cx2, cy2)+ (x3, y3)+ CM.closePath++euclideanDistance :: Point -> Point -> Double+euclideanDistance (x1, y1) (x2, y2) = sqrt $ square (x2 - x1) + square (y2 - y1)+ where+ square x = x * x++drawFigure :: MonadCanvas m => DrawState -> Double -> m () -> m ()+drawFigure ds w figure = do+ withDS ds $ do+ figure+ when (w /= 0) $ do+ CM.lineWidth w+ applyColor ds+ CM.stroke+ when (w == 0) $ do+ CM.lineWidth =<< pixelSize+ applyColor ds+ CM.stroke++fillFigure :: MonadCanvas m => DrawState -> m () -> m ()+fillFigure ds figure = do+ withDS ds $ figure+ applyColor ds+ CM.fill++--------------------------------------------------------------------------------++drawPicture :: MonadCanvas m => Picture -> DrawState -> m ()+drawPicture (SolidClosedCurve _ pts) ds = drawPolygon pts True ds+drawPicture (SolidPolygon _ pts) ds = drawPolygon pts False ds+drawPicture (Polygon _ pts) ds = drawPath pts 0 True False ds+drawPicture (ThickPolygon _ pts w) ds = drawPath pts w True False ds+drawPicture (Rectangle _ w h) ds = drawPath (rectangleVertices w h) 0 True False ds+drawPicture (SolidRectangle _ w h) ds = drawPolygon (rectangleVertices w h) False ds+drawPicture (ThickRectangle _ lw w h) ds = drawPath (rectangleVertices w h) lw True False ds+drawPicture (ClosedCurve _ pts) ds = drawPath pts 0 True True ds+drawPicture (ThickClosedCurve _ pts w) ds = drawPath pts w True True ds+drawPicture (Circle _ r) ds = drawArc 0 (2 * pi) r 0 ds+drawPicture (SolidCircle _ r) ds = drawSector 0 (2 * pi) r ds+drawPicture (ThickCircle _ lw r) ds = drawArc 0 (2 * pi) r lw ds+drawPicture (Polyline _ pts) ds = drawPath pts 0 False False ds+drawPicture (ThickPolyline _ pts w) ds = drawPath pts w False False ds+drawPicture (Curve _ pts) ds = drawPath pts 0 False True ds+drawPicture (ThickCurve _ pts w) ds = drawPath pts w False True ds+drawPicture (Sector _ b e r) ds = drawSector b e r ds+drawPicture (Arc _ b e r) ds = drawArc b e r 0 ds+drawPicture (ThickArc _ b e r w) ds = drawArc b e r w ds+drawPicture (Lettering _ txt) ds = drawText Plain Serif txt ds+drawPicture (Blank _) _ = return ()+drawPicture (StyledLettering _ sty fnt txt) ds = drawText sty fnt txt ds+drawPicture (Sketch _ name url w h) ds = drawImage name url w h ds+drawPicture (CoordinatePlane _) ds = drawPicture coordinatePlanePic ds+drawPicture (Color _ col p) ds+ | isSimplePic p || isOpaque col = drawPicture p (setColorDS col ds)+ | otherwise = viaOffscreen col $ \c -> drawPicture p (setColorDS c ds)+drawPicture (Translate _ x y p) ds = drawPicture p (translateDS x y ds)+drawPicture (Scale _ x y p) ds = drawPicture p (scaleDS x y ds)+drawPicture (Dilate _ k p) ds = drawPicture p (scaleDS k k ds)+drawPicture (Rotate _ r p) ds = drawPicture p (rotateDS r ds)+drawPicture (Pictures _ ps) ds = forM_ (reverse ps) $ \p -> drawPicture p ds+drawPicture (PictureAnd _ ps) ds = forM_ (reverse ps) $ \p -> drawPicture p ds++pictureContains :: MonadCanvas m => Picture -> DrawState -> Point -> m Bool+pictureContains (SolidClosedCurve _ pts) ds pt = polygonContains pts True ds pt+pictureContains (SolidPolygon _ pts) ds pt = polygonContains pts False ds pt+pictureContains (Polygon _ pts) ds pt = pathContains pts 0 True False ds pt+pictureContains (ThickPolygon _ pts w) ds pt = pathContains pts w True False ds pt+pictureContains (Rectangle _ w h) ds pt = pathContains (rectangleVertices w h) 0 True False ds pt+pictureContains (SolidRectangle _ w h) ds pt = polygonContains (rectangleVertices w h) False ds pt+pictureContains (ThickRectangle _ lw w h) ds pt = pathContains (rectangleVertices w h) lw True False ds pt+pictureContains (ClosedCurve _ pts) ds pt = pathContains pts 0 True True ds pt+pictureContains (ThickClosedCurve _ pts w) ds pt = pathContains pts w True True ds pt+pictureContains (Circle _ r) ds pt = arcContains 0 (2 * pi) r 0 ds pt+pictureContains (SolidCircle _ r) ds pt = sectorContains 0 (2 * pi) r ds pt+pictureContains (ThickCircle _ lw r) ds pt = arcContains 0 (2 * pi) r lw ds pt+pictureContains (Polyline _ pts) ds pt = pathContains pts 0 False False ds pt+pictureContains (ThickPolyline _ pts w) ds pt = pathContains pts w False False ds pt+pictureContains (Curve _ pts) ds pt = pathContains pts 0 False True ds pt+pictureContains (ThickCurve _ pts w) ds pt = pathContains pts w False True ds pt+pictureContains (Sector _ b e r) ds pt = sectorContains b e r ds pt+pictureContains (Arc _ b e r) ds pt = arcContains b e r 0 ds pt+pictureContains (ThickArc _ b e r w) ds pt = arcContains b e r w ds pt+pictureContains (Lettering _ txt) ds pt = textContains Plain Serif txt ds pt+pictureContains (Blank _) _ _ = return False+pictureContains (StyledLettering _ sty fnt txt) ds pt = textContains sty fnt txt ds pt+pictureContains (Sketch _ name url w h) ds pt = imageContains name url w h ds pt+pictureContains (CoordinatePlane _) ds pt = pictureContains coordinatePlanePic ds pt+pictureContains (Color _ _ p) ds pt = pictureContains p ds pt+pictureContains (Translate _ x y p) ds pt = pictureContains p (translateDS x y ds) pt+pictureContains (Scale _ x y p) ds pt = pictureContains p (scaleDS x y ds) pt+pictureContains (Dilate _ k p) ds pt = pictureContains p (scaleDS k k ds) pt+pictureContains (Rotate _ r p) ds pt = pictureContains p (rotateDS r ds) pt+pictureContains (Pictures _ ps) ds pt = orM [pictureContains p ds pt | p <- ps]+pictureContains (PictureAnd _ ps) ds pt = orM [pictureContains p ds pt | p <- ps]++isSimplePic :: Picture -> Bool+isSimplePic (Pictures _ []) = True+isSimplePic (Pictures _ [p]) = isSimplePic p+isSimplePic (Pictures _ _) = False+isSimplePic (PictureAnd _ []) = True+isSimplePic (PictureAnd _ [p]) = isSimplePic p+isSimplePic (PictureAnd _ _) = False+isSimplePic (Translate _ _ _ p) = isSimplePic p+isSimplePic (Scale _ _ _ p) = isSimplePic p+isSimplePic (Dilate _ _ p) = isSimplePic p+isSimplePic (Rotate _ _ p) = isSimplePic p+isSimplePic (Color _ c p) = not (isOpaque c) || isSimplePic p+isSimplePic _ = True++isOpaque :: Color -> Bool+isOpaque (RGBA _ _ _ 1) = True+isOpaque _ = False++drawPolygon :: MonadCanvas m => [Point] -> Bool -> DrawState -> m ()+drawPolygon ps smooth ds = fillFigure ds $ followPath ps True smooth++polygonContains :: MonadCanvas m => [Point] -> Bool -> DrawState -> Point -> m Bool+polygonContains ps smooth ds p = do+ withDS ds $ followPath ps True smooth+ CM.isPointInPath p++drawPath :: MonadCanvas m => [Point] -> Double -> Bool -> Bool -> DrawState -> m ()+drawPath ps w closed smooth ds = drawFigure ds w $ followPath ps closed smooth++pathContains :: MonadCanvas m => [Point] -> Double -> Bool -> Bool -> DrawState -> Point -> m Bool+pathContains ps w closed smooth ds p = do+ s <- pixelSize+ drawFigure ds (max s w) $ followPath ps closed smooth+ CM.isPointInStroke p++drawSector :: MonadCanvas m => Double -> Double -> Double -> DrawState -> m ()+drawSector b e r ds = do+ fillFigure ds $ CM.arc 0 0 (abs r) b e (b > e) >> CM.lineTo (0, 0)++sectorContains :: MonadCanvas m => Double -> Double -> Double -> DrawState -> Point -> m Bool+sectorContains b e r ds p = do+ withDS ds $ CM.arc 0 0 (abs r) b e (b > e) >> CM.lineTo (0, 0)+ CM.isPointInPath p++drawArc :: MonadCanvas m => Double -> Double -> Double -> Double -> DrawState -> m ()+drawArc b e r w ds = do+ drawFigure ds w $ CM.arc 0 0 (abs r) b e (b > e)++arcContains :: MonadCanvas m => Double -> Double -> Double -> Double -> DrawState -> Point -> m Bool+arcContains b e r w ds p = do+ s <- pixelSize+ let width = max s w+ CM.lineWidth width+ drawFigure ds width $+ CM.arc 0 0 (abs r) b e (b > e)+ CM.isPointInStroke p++drawText :: MonadCanvas m => TextStyle -> Font -> Text -> DrawState -> m ()+drawText sty fnt txt ds = withDS ds $ do+ CM.scale (1/25) (-1/25)+ applyColor ds+ CM.font (fontString sty fnt)+ CM.fillText txt (0, 0)++textContains :: MonadCanvas m => TextStyle -> Font -> Text -> DrawState -> Point -> m Bool+textContains sty fnt txt ds p = do+ CM.font (fontString sty fnt)+ width <- (/ 25) <$> CM.measureText txt+ let height = 1 -- constant, defined in fontString+ withDS ds $ CM.rect ((-0.5) * width) ((-0.5) * height) width height+ CM.isPointInPath p++fontString :: TextStyle -> Font -> Text+fontString style font = stylePrefix style <> "25px " <> fontName font+ where+ stylePrefix Plain = ""+ stylePrefix Bold = "bold "+ stylePrefix Italic = "italic "++ fontName SansSerif = "sans-serif"+ fontName Serif = "serif"+ fontName Monospace = "monospace"+ fontName Handwriting = "cursive"+ fontName Fancy = "fantasy"+ fontName (NamedFont txt) = "\"" <> T.filter (/= '"') txt <> "\""++drawImage :: MonadCanvas m => Text -> Text -> Double -> Double -> DrawState -> m ()+drawImage name url imgw imgh ds = case getColorDS ds of+ -- Fast path: draw in original color.+ Nothing -> withDS ds $ do+ CM.scale 1 (-1)+ CM.drawImgURL name url imgw imgh++ -- Slow path: draw in a different color via an offscreen canvas.+ Just oc -> viaOffscreen oc $ \c -> do+ setColor c+ w <- CM.getScreenWidth+ h <- CM.getScreenHeight+ CM.fillRect (-w/2) (-h/2) w h+ CM.globalCompositeOperation "destination-in"+ withDS ds $ do+ CM.scale (1) (-1)+ CM.drawImgURL name url imgw imgh++imageContains :: MonadCanvas m => Text -> Text -> Double -> Double -> DrawState -> Point -> m Bool+imageContains _ _ imgw imgh ds p = withDS ds $ do+ CM.rect (-imgw / 2) (-imgh / 2) imgw imgh+ CM.isPointInPath p++coordinatePlanePic :: Picture+coordinatePlanePic = axes <> numbers <> guidelines+ where+ xline y = colored (RGBA 0 0 0 0.25) $ polyline [(-10, y), (10, y)]+ xaxis = colored (RGBA 0 0 0 0.75) $ polyline [(-10, 0), (10, 0)]+ axes = xaxis <> rotated (pi / 2) xaxis+ xguidelines = pictures [xline k | k <- [-10,-9 .. 10]]+ guidelines = xguidelines <> rotated (pi / 2) xguidelines+ numbers = xnumbers <> ynumbers+ xnumbers =+ pictures+ [ translated+ (fromIntegral k)+ 0.3+ (scaled 0.5 0.5 (lettering (T.pack (show k))))+ | k <- [-9,-8 .. 9]+ , k /= (0 :: Int)+ ]+ ynumbers =+ pictures+ [ translated+ 0.3+ (fromIntegral k)+ (scaled 0.5 0.5 (lettering (T.pack (show k))))+ | k <- [-9,-8 .. 9]+ , k /= (0 :: Int)+ ]++--------------------------------------------------------------------------------++clearScreen :: MonadCanvas m => m ()+clearScreen = do+ w <- CM.getScreenWidth+ h <- CM.getScreenHeight+ px <- pixelSize+ CM.fillColor 255 255 255 1+ CM.fillRect (-w/2 * px) (-h/2 * px) (w * px) (h * px)++drawFrame :: MonadCanvas m => Picture -> m ()+drawFrame pic = clearScreen >> drawPicture pic initialDS++pixelSize :: MonadCanvas m => m Double+pixelSize = do+ cw <- CM.getScreenWidth+ ch <- CM.getScreenHeight+ return $ max (20 / realToFrac cw) (20 / realToFrac ch)++setupScreenContext :: MonadCanvas m => Int -> Int -> m ()+setupScreenContext cw ch = do+ CM.translate (realToFrac cw / 2) (realToFrac ch / 2)+ s <- pixelSize+ CM.scale (1/s) (-1/s)+ CM.lineWidth 0+ CM.textCenter+ CM.textMiddle++--------------------------------------------------------------------------------++-- A NodeId a unique id for each node in a Picture, chosen by the order the node+-- appears in DFS. Always >=0.+newtype NodeId = NodeId { getNodeId :: Int}+ deriving (Eq, Ord, Enum, Show)++getChildNodes :: Picture -> [Picture]+getChildNodes (Color _ _ p) = [p]+getChildNodes (Translate _ _ _ p) = [p]+getChildNodes (Scale _ _ _ p) = [p]+getChildNodes (Dilate _ _ p) = [p]+getChildNodes (Rotate _ _ p) = [p]+getChildNodes (Pictures _ ps) = ps+getChildNodes (PictureAnd _ ps) = ps+getChildNodes _ = []++getRootTransform :: Picture -> DrawState -> DrawState+getRootTransform (Color _ c _) = setColorDS c+getRootTransform (Translate _ x y _) = translateDS x y+getRootTransform (Scale _ x y _) = scaleDS x y+getRootTransform (Dilate _ k _) = scaleDS k k+getRootTransform (Rotate _ r _) = rotateDS r+getRootTransform _ = id++findTopShape :: MonadCanvas m => DrawState -> Picture -> Double -> Double -> m (Maybe NodeId)+findTopShape ds pic x y = do+ (found, n) <- searchSingle ds pic x y+ return $ if found+ then Just (NodeId n)+ else Nothing+ where+ searchSingle ds pic x y = case getChildNodes pic of+ [] -> do+ contained <- pictureContains pic ds (x, y)+ case contained of+ True -> return (True, 0)+ False -> return (False, 1)+ pics -> fmap (+ 1) <$> searchMulti (getRootTransform pic ds) pics x y+ searchMulti _ [] _ _ = return (False, 0)+ searchMulti ds (pic:pics) x y = do+ (found, count) <- searchSingle ds pic x y+ case found of+ True -> return (True, count)+ False -> fmap (+ count) <$> searchMulti ds pics x y++-- If a picture is found, the result will include an array of the base picture+-- and all transformations.+findTopShapeFromPoint :: MonadCanvas m => Point -> Picture -> m (Maybe NodeId)+findTopShapeFromPoint (x, y) pic = do+ cw <- CM.getScreenWidth+ ch <- CM.getScreenHeight+ img <- CM.newImage (round cw) (round ch)+ CM.withImage img $ do+ setupScreenContext (round cw) (round ch)+ findTopShape initialDS pic x y++trim :: Int -> String -> String+trim x y+ | x >= length y = y+ | otherwise = take mid y ++ "..." ++ (reverse $ take mid $ reverse y)+ where mid = (x - 3) `div` 2++showFloat :: Double -> String+showFloat x+ | haskellMode && x < 0 = "(" ++ result ++ ")"+ | otherwise = result+ where result = stripZeros (showFFloatAlt (Just 4) x "")+ stripZeros = reverse . dropWhile (== '.') . dropWhile (== '0') . reverse++showPoints :: [Point] -> String+showPoints pts =+ "[" +++ intercalate ", " [+ "(" ++ showFloat x ++ ", " ++ showFloat y ++ ")"+ | (x, y) <- pts+ ] +++ "]"++showColor :: Color -> String+showColor c@(RGBA r g b a)+ | c == black = "black"+ | c == white = "white"+ | c == red = "red"+ | c == green = "green"+ | c == blue = "blue"+ | c == yellow = "yellow"+ | c == orange = "orange"+ | c == brown = "brown"+ | c == pink = "pink"+ | c == purple = "purple"+ | c == gray = "gray"+ | haskellMode, a == 1 = printf "(RGB %s %s %s)" (showFloat r) (showFloat g) (showFloat b)+ | a == 1 = printf "RGB(%s, %s, %s)" (showFloat r) (showFloat g) (showFloat b)+ | haskellMode = printf "(RGBA %s %s %s %s)" (showFloat r) (showFloat g) (showFloat b) (showFloat a)+ | otherwise = printf "RGBA(%s, %s, %s, %s)" (showFloat r) (showFloat g) (showFloat b) (showFloat a)++describePicture :: Picture -> String+describePicture (Rectangle _ w h)+ | haskellMode = printf "rectangle %s %s" (showFloat w) (showFloat h)+ | otherwise = printf "rectangle(%s, %s)" (showFloat w) (showFloat h)+describePicture (SolidRectangle _ w h)+ | haskellMode = printf "solidRectangle %s %s" (showFloat w) (showFloat h)+ | otherwise = printf "solidRectangle(%s, %s)" (showFloat w) (showFloat h)+describePicture (ThickRectangle _ lw w h)+ | haskellMode = printf "thickRectangle %s %s %s" (showFloat lw) (showFloat w) (showFloat h)+ | otherwise = printf "thickRectangle(%s, %s, %s)" (showFloat w) (showFloat h) (showFloat lw)+describePicture (Circle _ r)+ | haskellMode = printf "circle %s" (showFloat r)+ | otherwise = printf "circle(%s)" (showFloat r)+describePicture (SolidCircle _ r)+ | haskellMode = printf "solidCircle %s" (showFloat r)+ | otherwise = printf "solidCircle(%s)" (showFloat r)+describePicture (ThickCircle _ lw r)+ | haskellMode = printf "thickCircle %s %s" (showFloat lw) (showFloat r)+ | otherwise = printf "thickCircle(%s, %s)" (showFloat r) (showFloat lw)+describePicture (SolidPolygon _ pts)+ | haskellMode = printf "solidPolygon %s" (showPoints pts)+ | otherwise = printf "solidPolygon(%s)" (showPoints pts)+describePicture (SolidClosedCurve _ pts)+ | haskellMode = printf "solidClosedCurve %s" (showPoints pts)+ | otherwise = printf "solidClosedCurve(%s)" (showPoints pts)+describePicture (Polygon _ pts)+ | haskellMode = printf "polygon %s" (showPoints pts)+ | otherwise = printf "polygon(%s)" (showPoints pts)+describePicture (ThickPolygon _ pts w)+ | haskellMode = printf "thickPolygon %s %s" (showFloat w) (showPoints pts)+ | otherwise = printf "thickPolygon(%s, %s)" (showPoints pts) (showFloat w)+describePicture (ClosedCurve _ pts)+ | haskellMode = printf "closedCurve %s" (showPoints pts)+ | otherwise = printf "closedCurve(%s)" (showPoints pts)+describePicture (ThickClosedCurve _ pts w)+ | haskellMode = printf "thickClosedCurve %s %s" (showFloat w) (showPoints pts)+ | otherwise = printf "thickClosedCurve(%s, %s)" (showPoints pts) (showFloat w)+describePicture (Polyline _ pts)+ | haskellMode = printf "polyline %s" (showPoints pts)+ | otherwise = printf "polyline(%s)" (showPoints pts)+describePicture (ThickPolyline _ pts w)+ | haskellMode = printf "thickPolyline %s %s" (showFloat w) (showPoints pts)+ | otherwise = printf "thickPolyline(%s, %s)" (showPoints pts) (showFloat w)+describePicture (Curve _ pts)+ | haskellMode = printf "curve %s" (showPoints pts)+ | otherwise = printf "curve(%s)" (showPoints pts)+describePicture (ThickCurve _ pts w)+ | haskellMode = printf "thickCurve %s %s" (showFloat w) (showPoints pts)+ | otherwise = printf "thickCurve(%s, %s)" (showPoints pts) (showFloat w)+describePicture (Sector _ b e r)+ | haskellMode = printf "sector %s %s %s" (showFloat b) (showFloat e) (showFloat r)+ | otherwise = printf "sector(%s°, %s°, %s)" (showFloat (180 * b / pi)) (showFloat (180 * e / pi)) (showFloat r)+describePicture (Arc _ b e r)+ | haskellMode = printf "arc %s %s %s" (showFloat b) (showFloat e) (showFloat r)+ | otherwise = printf "arc(%s°, %s°, %s)" (showFloat (180 * b / pi)) (showFloat (180 * e / pi)) (showFloat r)+describePicture (ThickArc _ b e r w)+ | haskellMode = printf "thickArc %s %s %s %s" (showFloat w) (showFloat b) (showFloat e) (showFloat r)+ | otherwise = printf "thickArc(%s°, %s°, %s, %s)" (showFloat (180 * b / pi)) (showFloat (180 * e / pi)) (showFloat r) (showFloat w)+describePicture (Lettering _ txt)+ | haskellMode = printf "lettering %s" (show txt)+ | otherwise = printf "lettering(%s)" (show txt)+describePicture (Blank _) = "blank"+describePicture (StyledLettering _ style font txt)+ | haskellMode = printf "styledLettering %s %s %s" (showsPrec 10 style "") (showsPrec 10 font "") (show txt)+ | otherwise = printf "styledLettering(%s, %s, %s)" (show txt) (show font) (show style)+describePicture (Color _ c _)+ | haskellMode = printf "colored %s" (showColor c)+ | otherwise = printf "colored(..., %s)" (showColor c)+describePicture (Translate _ x y _)+ | haskellMode = printf "translated %s %s" (showFloat x) (showFloat y)+ | otherwise = printf "translated(..., %s, %s)" (showFloat x) (showFloat y)+describePicture (Scale _ x y _)+ | haskellMode = printf "scaled %s %s" (showFloat x) (showFloat y)+ | otherwise = printf "scaled(..., %s, %s)" (showFloat x) (showFloat y)+describePicture (Rotate _ angle _)+ | haskellMode = printf "rotated %s" (showFloat angle)+ | otherwise = printf "rotated(..., %s°)" (showFloat (180 * angle / pi))+describePicture (Dilate _ k _)+ | haskellMode = printf "dilated %s" (showFloat k)+ | otherwise = printf "dilated(..., %s)" (showFloat k)+describePicture (Sketch _ name _ _ _) = T.unpack name+describePicture (CoordinatePlane _) = "coordinatePlane"+describePicture (Pictures _ _)+ | haskellMode = "pictures"+ | otherwise = "pictures(...)"+describePicture (PictureAnd _ _)+ | haskellMode = "(&)"+ | otherwise = "... & ..."++getPictureSrcLoc :: Picture -> Maybe SrcLoc+getPictureSrcLoc (SolidPolygon loc _) = loc+getPictureSrcLoc (SolidClosedCurve loc _) = loc+getPictureSrcLoc (Polygon loc _) = loc+getPictureSrcLoc (ThickPolygon loc _ _) = loc+getPictureSrcLoc (Rectangle loc _ _) = loc+getPictureSrcLoc (SolidRectangle loc _ _) = loc+getPictureSrcLoc (ThickRectangle loc _ _ _) = loc+getPictureSrcLoc (ClosedCurve loc _) = loc+getPictureSrcLoc (ThickClosedCurve loc _ _) = loc+getPictureSrcLoc (Circle loc _) = loc+getPictureSrcLoc (SolidCircle loc _) = loc+getPictureSrcLoc (ThickCircle loc _ _) = loc+getPictureSrcLoc (Polyline loc _) = loc+getPictureSrcLoc (ThickPolyline loc _ _) = loc+getPictureSrcLoc (Curve loc _) = loc+getPictureSrcLoc (ThickCurve loc _ _) = loc+getPictureSrcLoc (Sector loc _ _ _) = loc+getPictureSrcLoc (Arc loc _ _ _) = loc+getPictureSrcLoc (ThickArc loc _ _ _ _) = loc+getPictureSrcLoc (Lettering loc _) = loc+getPictureSrcLoc (Blank loc) = loc+getPictureSrcLoc (StyledLettering loc _ _ _) = loc+getPictureSrcLoc (Color loc _ _) = loc+getPictureSrcLoc (Translate loc _ _ _) = loc+getPictureSrcLoc (Scale loc _ _ _) = loc+getPictureSrcLoc (Dilate loc _ _) = loc+getPictureSrcLoc (Rotate loc _ _) = loc+getPictureSrcLoc (Sketch loc _ _ _ _) = loc+getPictureSrcLoc (CoordinatePlane loc) = loc+getPictureSrcLoc (Pictures loc _) = loc+getPictureSrcLoc (PictureAnd loc _) = loc++#ifdef ghcjs_HOST_OS++--------------------------------------------------------------------------------+-- GHCJS implementation of drawing++-- Debug Mode logic+foreign import javascript unsafe "$1.drawImage($2, $3, $4, $5, $6);"+ canvasDrawImage :: Canvas.Context -> Element -> Int -> Int -> Int -> Int -> IO ()++foreign import javascript unsafe "$1.getContext('2d', { alpha: false })"+ getCodeWorldContext :: Canvas.Canvas -> IO Canvas.Context++foreign import javascript unsafe "showCanvas()"+ showCanvas :: IO ()++canvasFromElement :: Element -> Canvas.Canvas+canvasFromElement = Canvas.Canvas . unElement++elementFromCanvas :: Canvas.Canvas -> Element+elementFromCanvas = pFromJSVal . jsval++createFrameRenderer :: Element -> IO (Picture -> IO ())+createFrameRenderer canvas = do+ offscreenCanvas <- Canvas.create 500 500+ screen <- getCodeWorldContext (canvasFromElement canvas)+ return $ \pic -> withoutPreemption $ do+ setCanvasSize (elementFromCanvas offscreenCanvas) canvas+ rect <- getBoundingClientRect canvas+ withScreen (elementFromCanvas offscreenCanvas) rect (drawFrame pic)+ cw <- ClientRect.getWidth rect+ ch <- ClientRect.getHeight rect+ when (cw > 0 && ch > 0) $+ canvasDrawImage screen (elementFromCanvas offscreenCanvas)+ 0 0 (round cw) (round ch)++getTime :: IO Double+getTime = (/ 1000) <$> Performance.now++nextFrame :: IO Double+nextFrame = (/ 1000) <$> waitForAnimationFrame++data Node = Node+ { nodeId :: NodeId+ , nodeName :: String+ , nodeSrcLoc :: Maybe SrcLoc+ , nodeSubs :: SubNodes+ }++data SubNodes+ = NoSubNodes+ | SubNode Node+ | SubNodes [Node]++instance ToJSON Node where+ toJSON (Node id name srcLoc subs) =+ object $+ ["id" .= getNodeId id , "name" .= name]+ <> srcLoc'+ <> subs'+ where+ srcLoc' = case srcLoc of+ Nothing -> []+ Just loc -> [ "startLine" .= srcLocStartLine loc+ , "startCol" .= srcLocStartCol loc+ , "endLine" .= srcLocEndLine loc+ , "endCol" .= srcLocEndCol loc+ ]+ subs' = case subs of+ NoSubNodes -> []+ SubNode node -> ["picture" .= node]+ SubNodes nodes -> ["pictures" .= nodes]++pictureToNode :: Picture -> Node+pictureToNode = flip State.evalState (NodeId 0) . go+ where+ go pic = case pic of+ Pictures _ ps -> nodeWithChildren pic ps+ PictureAnd _ ps -> nodeWithChildren pic ps+ Color _ _ p -> nodeWithChild pic p+ Translate _ _ _ p -> nodeWithChild pic p+ Scale _ _ _ p -> nodeWithChild pic p+ Dilate _ _ p -> nodeWithChild pic p+ Rotate _ _ p -> nodeWithChild pic p+ SolidPolygon _ _ -> leafNode pic+ SolidClosedCurve _ _ -> leafNode pic+ Polygon _ _ -> leafNode pic+ ThickPolygon _ _ _ -> leafNode pic+ Rectangle _ _ _ -> leafNode pic+ SolidRectangle _ _ _ -> leafNode pic+ ThickRectangle _ _ _ _ -> leafNode pic+ ClosedCurve _ _ -> leafNode pic+ ThickClosedCurve _ _ _ -> leafNode pic+ Polyline _ _ -> leafNode pic+ ThickPolyline _ _ _ -> leafNode pic+ Curve _ _ -> leafNode pic+ ThickCurve _ _ _ -> leafNode pic+ Circle _ _ -> leafNode pic+ SolidCircle _ _ -> leafNode pic+ ThickCircle _ _ _ -> leafNode pic+ Sector _ _ _ _ -> leafNode pic+ Arc _ _ _ _ -> leafNode pic+ ThickArc _ _ _ _ _ -> leafNode pic+ StyledLettering _ _ _ _ -> leafNode pic+ Lettering _ _ -> leafNode pic+ CoordinatePlane _ -> leafNode pic+ Sketch _ _ _ _ _ -> leafNode pic+ Blank _ -> leafNode pic++ nodeWithChildren pic subs = node pic (SubNodes <$> traverse go subs)+ nodeWithChild pic sub = node pic (SubNode <$> go sub)+ leafNode pic = node pic (pure NoSubNodes)++ node pic getSubNodes = do+ nodeId <- State.get <* State.modify' succ+ let nodeName = trim 80 . describePicture $ pic+ let nodeSrcLoc = getPictureSrcLoc pic+ nodeSubs <- getSubNodes+ pure Node{..}++foreign import javascript unsafe "/\\bmode=haskell\\b/.test(location.search)"+ haskellMode :: Bool++withScreen :: Element -> ClientRect.ClientRect -> CanvasM a -> IO a+withScreen canvas rect action = do+ cw <- realToFrac <$> ClientRect.getWidth rect+ ch <- realToFrac <$> ClientRect.getHeight rect+ ctx <- getCodeWorldContext (canvasFromElement canvas)+ runCanvasM (cw, ch) ctx $ CM.saveRestore $ do+ setupScreenContext (round cw) (round ch)+ action++setCanvasSize :: Element -> Element -> IO ()+setCanvasSize target canvas = do+ rect <- getBoundingClientRect canvas+ cx <- ClientRect.getWidth rect+ cy <- ClientRect.getHeight rect+ setAttribute target ("width" :: JSString) (show (round cx :: Int))+ setAttribute target ("height" :: JSString) (show (round cy :: Int))++#else++--------------------------------------------------------------------------------+-- Stand-alone implementation of drawing++haskellMode :: Bool+haskellMode = True++type Port = Int++readPortFromEnv :: String -> Port -> IO Port+readPortFromEnv envName defaultPort = do+ ms <- lookupEnv envName+ return (fromMaybe defaultPort (ms >>= readMaybe))++runBlankCanvas :: (Canvas.DeviceContext -> IO ()) -> IO ()+runBlankCanvas act = do+ port <- readPortFromEnv "CODEWORLD_API_PORT" 3000+ let options =+ (fromIntegral port)+ { Canvas.events =+ ["mousedown", "mouseup", "mousemove", "keydown", "keyup"]+ }+ putStrLn $ printf "Open me on http://127.0.0.1:%d/" (Canvas.port options)+ Canvas.blankCanvas options $ \context -> do+ putStrLn "Program is starting..."+ act context++#endif++--------------------------------------------------------------------------------+-- Common event handling and core interaction code++keyCodeToText :: Word -> Text+keyCodeToText n =+ case n of+ _ | n >= 47 && n <= 90 -> fromAscii n+ _ | n >= 96 && n <= 105 -> fromNum (n - 96)+ _ | n >= 112 && n <= 135 -> "F" <> fromNum (n - 111)+ 3 -> "Cancel"+ 6 -> "Help"+ 8 -> "Backspace"+ 9 -> "Tab"+ 12 -> "5"+ 13 -> "Enter"+ 16 -> "Shift"+ 17 -> "Ctrl"+ 18 -> "Alt"+ 19 -> "Break"+ 20 -> "CapsLock"+ 27 -> "Esc"+ 32 -> " "+ 33 -> "PageUp"+ 34 -> "PageDown"+ 35 -> "End"+ 36 -> "Home"+ 37 -> "Left"+ 38 -> "Up"+ 39 -> "Right"+ 40 -> "Down"+ 42 -> "*"+ 43 -> "+"+ 44 -> "PrintScreen"+ 45 -> "Insert"+ 46 -> "Delete"+ 47 -> "Help"+ 91 -> "OS"+ 92 -> "OS"+ 93 -> "ContextMenu"+ 106 -> "*"+ 107 -> "+"+ 108 -> ","+ 109 -> "-"+ 110 -> "."+ 111 -> "/"+ 144 -> "NumLock"+ 145 -> "ScrollLock"+ 173 -> "-"+ 186 -> ";"+ 187 -> "="+ 188 -> ","+ 189 -> "-"+ 190 -> "."+ 191 -> "/"+ 192 -> "`"+ 193 -> "IntlRo"+ 194 -> ","+ 219 -> "["+ 220 -> "\\"+ 221 -> "]"+ 222 -> "'"+ 225 -> "AltGraph"+ 255 -> "IntlYen"+ _ -> "Unknown:" <> fromNum n+ where+ fromAscii n = T.singleton (chr (fromIntegral n))+ fromNum n = T.pack (show n)++isUniversallyConstant :: (a -> s -> s) -> s -> Bool+isUniversallyConstant f old =+ unsafePerformIO $ falseOr $ do+ oldName <- makeStableName $! old+ genName <- makeStableName $! f undefined old+ return (genName == oldName)+ where+ falseOr x = x `catch` \(_ :: SomeException) -> return False++ifDifferent :: (s -> s) -> s -> Maybe s+ifDifferent f s0 = unsafePerformIO $ do+ oldName <- makeStableName $! s0+ newName <- makeStableName $! s1+ if newName == oldName then return Nothing else return (Just s1)+ where s1 = f s0++modifyMVarIfDifferent :: MVar s -> (s -> s) -> IO Bool+modifyMVarIfDifferent var f =+ modifyMVar var $ \s0 -> do+ case ifDifferent f s0 of+ Nothing -> return (s0, False)+ Just s1 -> return (s1, True)++data GameToken+ = FullToken { tokenDeployHash :: Text+ , tokenNumPlayers :: Int+ , tokenInitial :: StaticKey+ , tokenStep :: StaticKey+ , tokenEvent :: StaticKey+ , tokenDraw :: StaticKey }+ | SteplessToken { tokenDeployHash :: Text+ , tokenNumPlayers :: Int+ , tokenInitial :: StaticKey+ , tokenEvent :: StaticKey+ , tokenDraw :: StaticKey }+ | PartialToken { tokenDeployHash :: Text }+ deriving (Generic)++deriving instance Generic Fingerprint++instance Serialize Fingerprint++instance Serialize GameToken++#ifdef ghcjs_HOST_OS++--------------------------------------------------------------------------------+-- GHCJS event handling and core interaction code++screenCoordsToPoint :: Element -> Double -> Double -> IO Point+screenCoordsToPoint canvas sx sy = do+ rect <- getBoundingClientRect canvas+ cx <- realToFrac <$> ClientRect.getLeft rect+ cy <- realToFrac <$> ClientRect.getTop rect+ cw <- realToFrac <$> ClientRect.getWidth rect+ ch <- realToFrac <$> ClientRect.getHeight rect+ let unitLen = min cw ch / 20+ let midx = cx + cw / 2+ let midy = cy + ch / 2+ return ((sx - midx) / unitLen, (midy - sy) / unitLen)++getMousePos :: IsMouseEvent e => Element -> EventM w e Point+getMousePos canvas = do+ (ix, iy) <- mouseClientXY+ liftIO $ screenCoordsToPoint canvas (fromIntegral ix) (fromIntegral iy)++onEvents :: Element -> (Event -> IO ()) -> IO ()+onEvents canvas handler = do+ Just window <- currentWindow+ _ <- on window keyDown $ do+ code <- getKeyCode =<< event+ let keyName = keyCodeToText code+ when (keyName /= "") $ do+ liftIO $ handler (KeyPress keyName)+ preventDefault+ stopPropagation+ key <- getKey =<< event+ when (T.length key == 1) $ do+ liftIO $ handler (TextEntry key)+ preventDefault+ stopPropagation+ _ <- on window keyUp $ do+ code <- getKeyCode =<< event+ let keyName = keyCodeToText code+ when (keyName /= "") $ do+ liftIO $ handler (KeyRelease keyName)+ preventDefault+ stopPropagation+ _ <- on window mouseDown $ do+ pos <- getMousePos canvas+ liftIO $ handler (PointerPress pos)+ _ <- on window mouseUp $ do+ pos <- getMousePos canvas+ liftIO $ handler (PointerRelease pos)+ _ <- on window mouseMove $ do+ pos <- getMousePos canvas+ liftIO $ handler (PointerMovement pos)+ return ()++encodeEvent :: (Timestamp, Maybe Event) -> String+encodeEvent = show++decodeEvent :: String -> Maybe (Timestamp, Maybe Event)+decodeEvent = readMaybe++data GameState s+ = Main (UIState SMain)+ | Connecting WS.WebSocket+ (UIState SConnect)+ | Waiting WS.WebSocket+ GameId+ PlayerId+ (UIState SWait)+ | Running WS.WebSocket+ GameId+ Timestamp+ PlayerId+ (Future s)++gameTime :: GameState s -> Timestamp -> Double+gameTime (Running _ _ tstart _ _) t = t - tstart+gameTime _ _ = 0++-- It's worth trying to keep the canonical animation rate exactly representable+-- as a float, to minimize the chance of divergence due to rounding error.+gameRate :: Double+gameRate = 1 / 16++gameStep :: (Double -> s -> s) -> Double -> GameState s -> GameState s+gameStep _ t (Main s) = Main (CUI.step t s)+gameStep _ t (Connecting ws s) = Connecting ws (CUI.step t s)+gameStep _ t (Waiting ws gid pid s) = Waiting ws gid pid (CUI.step t s)+gameStep step t (Running ws gid tstart pid s) =+ Running ws gid tstart pid (currentTimePasses step gameRate (t - tstart) s)++gameDraw ::+ (Double -> s -> s)+ -> (PlayerId -> s -> Picture)+ -> GameState s+ -> Timestamp+ -> Picture+gameDraw _ _ (Main s) _ = CUI.picture s+gameDraw _ _ (Connecting _ s) _ = CUI.picture s+gameDraw _ _ (Waiting _ _ _ s) _ = CUI.picture s+gameDraw step draw (Running _ _ tstart pid s) t =+ draw pid (currentState step gameRate (t - tstart) s)++handleServerMessage ::+ Int+ -> (StdGen -> s)+ -> (Double -> s -> s)+ -> (PlayerId -> Event -> s -> s)+ -> MVar (GameState s)+ -> ServerMessage+ -> IO ()+handleServerMessage numPlayers initial stepHandler eventHandler gsm sm = do+ modifyMVar_ gsm $ \gs -> do+ t <- getTime+ case (sm, gs) of+ (GameAborted, _) -> return initialGameState+ (JoinedAs pid gid, Connecting ws s) ->+ return (Waiting ws gid pid (CUI.startWaiting gid s))+ (PlayersWaiting m n, Waiting ws gid pid s) ->+ return (Waiting ws gid pid (CUI.updatePlayers n m s))+ (Started, Waiting ws gid pid _) -> do+ let s = initFuture (initial (mkStdGen (hash gid))) numPlayers+ return (Running ws gid t pid s)+ (OutEvent pid eo, Running ws gid tstart mypid s) ->+ case decodeEvent eo of+ Just (t', event) ->+ let ours = pid == mypid+ func = eventHandler pid <$> event -- might be a ping (Nothing)+ result+ | ours = s -- we already took care of our events+ | otherwise =+ addEvent stepHandler gameRate mypid t' func s+ in return (Running ws gid tstart mypid result)+ Nothing -> return (Running ws gid tstart mypid s)+ _ -> return gs+ return ()++gameHandle ::+ Int+ -> (StdGen -> s)+ -> (Double -> s -> s)+ -> (PlayerId -> Event -> s -> s)+ -> GameToken+ -> MVar (GameState s)+ -> Event+ -> IO ()+gameHandle numPlayers initial stepHandler eventHandler token gsm event = do+ gs <- takeMVar gsm+ case gs of+ Main s ->+ case CUI.event event s of+ ContinueMain s' -> do+ putMVar gsm (Main s')+ Create s' -> do+ ws <-+ connectToGameServer+ (handleServerMessage+ numPlayers+ initial+ stepHandler+ eventHandler+ gsm)+ sendClientMessage ws (NewGame numPlayers (encode token))+ putMVar gsm (Connecting ws s')+ Join gid s' -> do+ ws <-+ connectToGameServer+ (handleServerMessage+ numPlayers+ initial+ stepHandler+ eventHandler+ gsm)+ sendClientMessage ws (JoinGame gid (encode token))+ putMVar gsm (Connecting ws s')+ Connecting ws s ->+ case CUI.event event s of+ ContinueConnect s' -> do+ putMVar gsm (Connecting ws s')+ CancelConnect s' -> do+ WS.close Nothing Nothing ws+ putMVar gsm (Main s')+ Waiting ws gid pid s ->+ case CUI.event event s of+ ContinueWait s' -> do+ putMVar gsm (Waiting ws gid pid s')+ CancelWait s' -> do+ WS.close Nothing Nothing ws+ putMVar gsm (Main s')+ Running ws gid tstart pid f -> do+ t <- getTime+ let gameState0 = currentState stepHandler gameRate (t - tstart) f+ let eventFun = eventHandler pid event+ case ifDifferent eventFun gameState0 of+ Nothing -> putMVar gsm gs+ Just _ -> do+ sendClientMessage+ ws+ (InEvent (encodeEvent (gameTime gs t, Just event)))+ let f1 =+ addEvent+ stepHandler+ gameRate+ pid+ (t - tstart)+ (Just eventFun)+ f+ putMVar gsm (Running ws gid tstart pid f1)++getWebSocketURL :: IO JSString+getWebSocketURL = do+ loc <- Loc.getWindowLocation+ proto <- Loc.getProtocol loc+ hostname <- Loc.getHostname loc+ let url =+ case proto of+ "http:" -> "ws://" <> hostname <> ":9160/gameserver"+ "https:" -> "wss://" <> hostname <> "/gameserver"+ _ -> error "Unrecognized protocol"+ return url++connectToGameServer :: (ServerMessage -> IO ()) -> IO WS.WebSocket+connectToGameServer handleServerMessage = do+ let handleWSRequest m = do+ maybeSM <- decodeServerMessage m+ case maybeSM of+ Nothing -> return ()+ Just sm -> handleServerMessage sm+ wsURL <- getWebSocketURL+ let req =+ WS.WebSocketRequest+ { url = wsURL+ , protocols = []+ , onClose = Just $ \_ -> handleServerMessage GameAborted+ , onMessage = Just handleWSRequest+ }+ WS.connect req+ where+ decodeServerMessage :: WS.MessageEvent -> IO (Maybe ServerMessage)+ decodeServerMessage m =+ case WS.getData m of+ WS.StringData str -> do+ return $ readMaybe (Data.JSString.unpack str)+ _ -> return Nothing++sendClientMessage :: WS.WebSocket -> ClientMessage -> IO ()+sendClientMessage ws msg = WS.send (encodeClientMessage msg) ws+ where+ encodeClientMessage :: ClientMessage -> JSString+ encodeClientMessage m = Data.JSString.pack (show m)++initialGameState :: GameState s+initialGameState = Main CUI.initial++foreign import javascript unsafe "cw$deterministic_math();"+ enableDeterministicMath :: IO ()++runGame ::+ GameToken+ -> Int+ -> (StdGen -> s)+ -> (Double -> s -> s)+ -> (Int -> Event -> s -> s)+ -> (Int -> s -> Picture)+ -> IO ()+runGame token numPlayers initial stepHandler eventHandler drawHandler = do+ enableDeterministicMath+ let fullStepHandler dt = stepHandler dt . eventHandler (-1) (TimePassing dt)++ Just window <- currentWindow+ Just doc <- currentDocument+ Just canvas <- getElementById doc ("screen" :: JSString)++ setCanvasSize canvas canvas+ _ <- on window resize $ do+ liftIO $ setCanvasSize canvas canvas++ showCanvas++ frameRenderer <- createFrameRenderer canvas++ currentGameState <- newMVar initialGameState+ onEvents canvas $+ gameHandle+ numPlayers+ initial+ fullStepHandler+ eventHandler+ token+ currentGameState++ let go t0 lastFrame = do+ gs <- readMVar currentGameState+ let pic = gameDraw fullStepHandler drawHandler gs t0+ picFrame <- makeStableName $! pic+ when (picFrame /= lastFrame) $ frameRenderer pic+ t1 <- nextFrame+ modifyMVar_ currentGameState $ return . gameStep fullStepHandler t1+ go t1 picFrame+ t0 <- nextFrame+ nullFrame <- makeStableName undefined+ go t0 nullFrame++getDeployHash :: IO Text+getDeployHash = pFromJSVal <$> js_getDeployHash++foreign import javascript "/[&?]dhash=(.{22})/.exec(window.location.search)[1]"+ js_getDeployHash :: IO JSVal++propagateErrors :: ThreadId -> IO () -> IO ()+propagateErrors tid action = action `catch` \ (e :: SomeException) -> throwTo tid e++run :: s+ -> (Double -> s -> s)+ -> (e -> s -> s)+ -> (s -> Picture)+ -> (Double -> e)+ -> IO (e -> IO (), IO s)+run initial stepHandler eventHandler drawHandler injectTime = do+ let fullStepHandler dt = stepHandler dt . eventHandler (injectTime dt)++ Just window <- currentWindow+ Just doc <- currentDocument+ Just canvas <- getElementById doc ("screen" :: JSString)++ needsRedraw <- newMVar ()+ _ <- on window resize $ void $ liftIO $ do+ setCanvasSize canvas canvas+ tryPutMVar needsRedraw ()+ setCanvasSize canvas canvas++ showCanvas++ frameRenderer <- createFrameRenderer canvas+ currentState <- newMVar initial+ eventHappened <- newMVar ()+ let go t0 lastFrame lastStateName needsTime = do+ pic <- drawHandler <$> readMVar currentState+ picFrame <- makeStableName $! pic+ when (picFrame /= lastFrame) $ frameRenderer pic+ t1 <-+ case needsTime of+ True -> do+ t1 <- nextFrame+ let dt = min (t1 - t0) 0.25+ when (dt > 0) $ void $+ modifyMVarIfDifferent currentState (fullStepHandler dt)+ return t1+ False -> do+ takeMVar eventHappened+ nextFrame+ nextState <- readMVar currentState+ nextStateName <- makeStableName $! nextState+ let nextNeedsTime =+ nextStateName /= lastStateName ||+ needsTime && not (isUniversallyConstant fullStepHandler nextState)+ redrawResult <- tryTakeMVar needsRedraw+ nextFrame <- case redrawResult of+ Nothing -> return picFrame+ Just () -> makeStableName undefined+ go t1 nextFrame nextStateName nextNeedsTime+ t0 <- nextFrame+ nullFrame <- makeStableName undefined+ initialStateName <- makeStableName $! initial+ mainThread <- myThreadId+ drawThread <- forkIO $ propagateErrors mainThread $+ go t0 nullFrame initialStateName True+ let sendEvent event = propagateErrors drawThread $ do+ changed <-+ modifyMVarIfDifferent currentState (eventHandler event)+ when changed $ void $ tryPutMVar eventHappened ()+ getState = readMVar currentState+ return (sendEvent, getState)++getNodeAtCoords :: Element -> Double -> Double -> Picture -> IO (Maybe NodeId)+getNodeAtCoords canvas x y pic = do+ rect <- getBoundingClientRect canvas+ cx <- realToFrac <$> ClientRect.getLeft rect+ cy <- realToFrac <$> ClientRect.getTop rect+ cw <- realToFrac <$> ClientRect.getWidth rect+ ch <- realToFrac <$> ClientRect.getHeight rect++ -- It's safe to pass undefined for the context because+ -- findTopShapeFromPoint only draws to an offscreen buffer.+ runCanvasM (cw, ch) undefined $+ findTopShapeFromPoint (x - cx, y - cy) pic++drawPartialPic :: Element -> NodeId -> Picture -> IO ()+drawPartialPic canvas nodeId pic = do+ setCanvasSize canvas canvas+ let node = fromMaybe blank (getNode nodeId pic)+ frameRenderer <- createFrameRenderer canvas+ frameRenderer (node <> coordinatePlane)++applySelectAndHighlights :: Maybe NodeId -> [NodeId] -> Picture -> Picture+applySelectAndHighlights sel hs p = applyHighlights hs' p'+ where (p', hs') = applySelect sel (p, hs)++applySelect :: Maybe NodeId -> (Picture, [NodeId]) -> (Picture, [NodeId])+applySelect Nothing (pic, highlights) = (pic, highlights)+applySelect (Just (NodeId n)) (pic, highlights) =+ case getNode (NodeId n) pic of+ Nothing -> (pic, highlights)+ Just pic' -> (pic', [ NodeId (h - n) | NodeId h <- highlights ])++applyHighlights :: [NodeId] -> Picture -> Picture+applyHighlights hs p = pictures [highlight h p | h <- hs] <> p++highlight :: NodeId -> Picture -> Picture+highlight n pic = case getTransformedNode n pic of+ Nothing -> blank+ Just shape -> colored (RGBA 0 0 0 0.25) shape++indexNode :: Bool -> Int -> NodeId -> Picture -> Either Int Picture+indexNode _ i (NodeId n) p+ | i == n = Right p+ | i > n = Left 0+indexNode True i n (Translate loc x y p)+ = Translate loc x y <$> indexNode True (i + 1) n p+indexNode True i n (Scale loc x y p)+ = Scale loc x y <$> indexNode True (i + 1) n p+indexNode True i n (Dilate loc k p)+ = Dilate loc k <$> indexNode True (i + 1) n p+indexNode True i n (Rotate loc r p)+ = Rotate loc r <$> indexNode True (i + 1) n p+indexNode keepTx i n p = go keepTx (i + 1) (getChildNodes p)+ where go _ i [] = Left i+ go keepTx i (pic:pics) =+ case indexNode keepTx i n pic of+ Left ii -> go keepTx ii pics+ Right p -> Right p++getTransformedNode :: NodeId -> Picture -> Maybe Picture+getTransformedNode n pic = either (const Nothing) Just (indexNode True 0 n pic)++getNode :: NodeId -> Picture -> Maybe Picture+getNode n pic = either (const Nothing) Just (indexNode False 0 n pic)++data DebugState = DebugState+ { debugStateActive :: Bool+ , shapeHighlighted :: Maybe NodeId+ , shapeSelected :: Maybe NodeId+ } deriving (Eq, Show)++debugStateInit :: DebugState+debugStateInit = DebugState False Nothing Nothing++startDebugState :: DebugState -> DebugState+startDebugState = const (DebugState True Nothing Nothing)++stopDebugState :: DebugState -> DebugState+stopDebugState = const (DebugState False Nothing Nothing)++highlightDebugState :: Maybe NodeId -> DebugState -> DebugState+highlightDebugState n prev =+ case debugStateActive prev of+ True -> prev {shapeHighlighted = n}+ False -> DebugState False Nothing Nothing++selectDebugState :: Maybe NodeId -> DebugState -> DebugState+selectDebugState n prev =+ case debugStateActive prev of+ True -> prev {shapeSelected = n}+ False -> DebugState False Nothing Nothing++drawDebugState :: DebugState -> Picture -> Picture -> Picture+drawDebugState state inspectPic displayPic =+ case debugStateActive state of+ True -> applySelectAndHighlights+ (shapeSelected state)+ (maybeToList (shapeHighlighted state))+ inspectPic+ False -> displayPic++connectInspect+ :: Element+ -> IO Picture+ -> ((DebugState -> DebugState) -> IO ())+ -> IO ()+connectInspect canvas samplePicture fireUpdate = do+ -- Sample the current user picture to search for a current node.+ getNodeCB <- syncCallback1' $ \pointJS -> do+ let obj = unsafeCoerce pointJS+ x <- pFromJSVal <$> getProp "x" obj+ y <- pFromJSVal <$> getProp "y" obj+ n <- getNodeAtCoords canvas x y =<< samplePicture+ return (pToJSVal (maybe (-1) getNodeId n))++ -- Sample the current user picture to return the scene tree.+ getPicCB <- syncCallback' $ samplePicture >>= toJSVal_aeson . pictureToNode++ -- Sample the current user picture to draw to a canvas.+ drawCB <- syncCallback2 ContinueAsync $ \c n -> do+ let canvas = unsafeCoerce c :: Element+ let nodeId = NodeId (pFromJSVal n)+ drawPartialPic canvas nodeId =<< samplePicture++ -- Fire an event to change debug active state.+ setActiveCB <- syncCallback1 ContinueAsync $ \ active -> case pFromJSVal active of+ True -> fireUpdate startDebugState+ False -> fireUpdate stopDebugState++ -- Fire an event to change the highlight or selection.+ highlightCB <- syncCallback2 ContinueAsync $ \t n -> do+ let isHighlight = pFromJSVal t+ let nodeNum = pFromJSVal n+ let nodeId = if nodeNum < 0 then Nothing else Just (NodeId nodeNum)+ if isHighlight then fireUpdate (highlightDebugState nodeId)+ else fireUpdate (selectDebugState nodeId)++ js_initDebugMode getNodeCB setActiveCB getPicCB highlightCB drawCB++foreign import javascript unsafe "initDebugMode($1,$2,$3,$4,$5)"+ js_initDebugMode :: Callback (JSVal -> IO JSVal)+ -> Callback (JSVal -> IO ())+ -> Callback (IO JSVal)+ -> Callback (JSVal -> JSVal -> IO ())+ -> Callback (JSVal -> JSVal -> IO ())+ -> IO ()++-- Utility functions that apply a function in either the left or right half of a+-- tuple. Crucially, if the function preserves sharing on its side, then the+-- wrapper also preserves sharing.+inLeft :: (a -> a) -> (a, b) -> (a, b)+inLeft f ab = unsafePerformIO $ do+ let (a, b) = ab+ aName <- makeStableName $! a+ let a' = f a+ aName' <- makeStableName $! a'+ return $ if aName == aName' then ab else (a', b)++inRight :: (b -> b) -> (a, b) -> (a, b)+inRight f ab = unsafePerformIO $ do+ let (a, b) = ab+ bName <- makeStableName $! b+ let b' = f b+ bName' <- makeStableName $! b'+ return $ if bName == bName' then ab else (a, b')++foreign import javascript interruptible "window.dummyVar = 0;"+ waitForever :: IO ()++-- Wraps the event and state from run so they can be paused by pressing the Inspect+-- button.+runInspect+ :: s+ -> (Double -> s -> s)+ -> (Event -> s -> s)+ -> (s -> Picture)+ -> (s -> Picture)+ -> IO ()+runInspect initial step event draw rawDraw = do+ -- Ensure that the first frame picture doesn't expose any type errors,+ -- before showing the canvas. This avoids showing a blank screen when+ -- there are deferred type errors that are effectively compile errors.+ evaluate $ rnf $ rawDraw initial++ Just doc <- currentDocument+ Just canvas <- getElementById doc ("screen" :: JSString)+ let debugInitial = (debugStateInit, initial)+ debugStep dt s@(debugState, _) =+ case debugStateActive debugState of+ True -> s+ False -> inRight (step dt) s+ debugEvent evt s@(debugState, _) =+ case (debugStateActive debugState, evt) of+ (_, Left f) -> inLeft f s+ (True, _) -> s+ (_, Right e) -> inRight (event e) s+ debugDraw (debugState, s) =+ drawDebugState debugState (rawDraw s) (draw s)+ debugRawDraw (_debugState, s) = rawDraw s+ (sendEvent, getState) <-+ run debugInitial debugStep debugEvent debugDraw (Right . TimePassing)+ onEvents canvas (sendEvent . Right)+ connectInspect canvas (debugRawDraw <$> getState) (sendEvent . Left)+ waitForever++#else++--------------------------------------------------------------------------------+-- Stand-Alone event handling and core interaction code++getMousePos :: (Int, Int) -> (Double, Double) -> (Double, Double)+getMousePos (w, h) (x, y) =+ ((x - mx) / unitLen, (my - y) / unitLen)+ where+ w' = fromIntegral w+ h' = fromIntegral h+ unitLen = min w' h' / 20+ mx = w' / 2+ my = h' / 2++toEvent :: (Int, Int) -> Canvas.Event -> Maybe Event+toEvent rect Canvas.Event {..}+ | eType == "keydown"+ , Just code <- eWhich = Just $ KeyPress (keyCodeToText (fromIntegral code))+ | eType == "keyup"+ , Just code <- eWhich =+ Just $ KeyRelease (keyCodeToText (fromIntegral code))+ | eType == "mousedown"+ , Just pos <- getMousePos rect <$> ePageXY = Just $ PointerPress pos+ | eType == "mouseup"+ , Just pos <- getMousePos rect <$> ePageXY = Just $ PointerRelease pos+ | eType == "mousemove"+ , Just pos <- getMousePos rect <$> ePageXY = Just $ PointerMovement pos+ | otherwise = Nothing++onEvents :: Canvas.DeviceContext -> (Int, Int) -> (Event -> IO ()) -> IO ()+onEvents context rect handler = void $ forkIO $ forever $ do+ maybeEvent <- toEvent rect <$> Canvas.wait context+ forM_ maybeEvent handler++run :: s -> (Double -> s -> s) -> (Event -> s -> s) -> (s -> Picture) -> IO ()+run initial stepHandler eventHandler drawHandler =+ runBlankCanvas $ \context -> do+ let fullStepHandler dt = stepHandler dt . eventHandler (TimePassing dt)+ let cw = Canvas.width context+ let ch = Canvas.height context+ offscreenCanvas <- runCanvasM context $ CM.newImage cw ch+ currentState <- newMVar initial+ eventHappened <- newMVar ()+ onEvents context (cw, ch) $ \event -> do+ modifyMVar_ currentState (return . eventHandler event)+ void $ tryPutMVar eventHappened ()+ let go t0 lastFrame lastStateName needsTime = do+ pic <- drawHandler <$> readMVar currentState+ picFrame <- makeStableName $! pic+ when (picFrame /= lastFrame) $+ runCanvasM context $ do+ CM.withImage offscreenCanvas $+ CM.saveRestore $ do+ setupScreenContext cw ch+ drawFrame pic+ CM.drawImage offscreenCanvas 0 0 cw ch+ t1 <- case needsTime of+ True -> do+ tn <- getCurrentTime+ threadDelay $+ max+ 0+ (50000 -+ round ((tn `diffUTCTime` t0) * 1000000))+ t1 <- getCurrentTime+ let dt = realToFrac (t1 `diffUTCTime` t0)+ when (dt > 0) $ modifyMVar_ currentState (return . fullStepHandler dt)+ return t1+ False -> do+ takeMVar eventHappened+ getCurrentTime+ nextState <- readMVar currentState+ nextStateName <- makeStableName $! nextState+ let nextNeedsTime =+ nextStateName /= lastStateName ||+ needsTime && not (isUniversallyConstant fullStepHandler nextState)+ go t1 picFrame nextStateName nextNeedsTime+ t0 <- getCurrentTime+ nullFrame <- makeStableName undefined+ initialStateName <- makeStableName $! initial+ go t0 nullFrame initialStateName True++runInspect+ :: s+ -> (Double -> s -> s)+ -> (Event -> s -> s)+ -> (s -> Picture)+ -> (s -> Picture)+ -> IO ()+runInspect initial step event draw _rawDraw = run initial step event draw++getDeployHash :: IO Text+getDeployHash = error "game API unimplemented in stand-alone interface mode"++runGame+ :: GameToken+ -> Int+ -> (StdGen -> s)+ -> (Double -> s -> s)+ -> (Int -> Event -> s -> s)+ -> (Int -> s -> Picture)+ -> IO ()+runGame = error "game API unimplemented in stand-alone interface mode"++#endif++--------------------------------------------------------------------------------+-- FRP implementation++data ReactiveInput t = ReactiveInput {+ keyPress :: R.Event t Text,+ keyRelease :: R.Event t Text,+ textEntry :: R.Event t Text,+ pointerPress :: R.Event t Point,+ pointerRelease :: R.Event t Point,+ pointerPosition :: R.Dynamic t Point,+ pointerDown :: R.Dynamic t Bool,+ timePassing :: R.Event t Double+ }++data ReactiveOutput = ReactiveOutput {+ userPictures :: [Picture],+ userTransform :: Picture -> Picture,+ systemPicture :: Picture+ }++instance Semigroup ReactiveOutput where+ a <> b = ReactiveOutput {+ userPictures = userPictures a ++ userPictures b,+ userTransform = userTransform a . userTransform b,+ systemPicture = systemPicture a & systemPicture b+ }++instance Monoid ReactiveOutput where+ mempty = ReactiveOutput [] id blank++newtype ReactiveProgram t m a = ReactiveProgram {+ unReactiveProgram :: ReaderT (ReactiveInput t) (R.DynamicWriterT t ReactiveOutput m) a+ }++deriving instance Functor m => Functor (ReactiveProgram t m)+deriving instance Monad m => Applicative (ReactiveProgram t m)+deriving instance Monad m => Monad (ReactiveProgram t m)+deriving instance MonadFix m => MonadFix (ReactiveProgram t m)+deriving instance R.MonadSample t m => R.MonadSample t (ReactiveProgram t m)+deriving instance R.MonadHold t m => R.MonadHold t (ReactiveProgram t m)+deriving instance R.PerformEvent t m => R.PerformEvent t (ReactiveProgram t m)+deriving instance R.PostBuild t m => R.PostBuild t (ReactiveProgram t m)++instance (MonadFix m, R.MonadHold t m, R.Adjustable t m) => R.Adjustable t (ReactiveProgram t m) where+ runWithReplace a0 a' =+ ReactiveProgram $ R.runWithReplace (unReactiveProgram a0) $ fmap unReactiveProgram a'+ traverseIntMapWithKeyWithAdjust f dm0 dm' =+ ReactiveProgram $ R.traverseIntMapWithKeyWithAdjust (\k v -> unReactiveProgram (f k v)) dm0 dm'+ traverseDMapWithKeyWithAdjust f dm0 dm' =+ ReactiveProgram $ R.traverseDMapWithKeyWithAdjust (\k v -> unReactiveProgram (f k v)) dm0 dm'+ traverseDMapWithKeyWithAdjustWithMove f dm0 dm' =+ ReactiveProgram $ R.traverseDMapWithKeyWithAdjustWithMove (\k v -> unReactiveProgram (f k v)) dm0 dm'++runReactiveProgram+ :: (R.Reflex t, MonadFix m)+ => ReactiveProgram t m ()+ -> ReactiveInput t+ -> m (R.Dynamic t Picture, R.Dynamic t Picture)+runReactiveProgram (ReactiveProgram program) input = do+ ((), output) <- R.runDynamicWriterT (runReaderT program input)+ return $ R.splitDynPure $ do+ pics <- userPictures <$> output+ let userPicture = case pics of+ [] -> blank+ [p] -> p+ ps -> pictures ps+ tform <- userTransform <$> output+ sysPic <- systemPicture <$> output+ return (userPicture, sysPic & tform userPicture)++withReactiveInput+ :: ReactiveInput t+ -> (ReactiveProgram t m a -> ReactiveProgram t m a)+withReactiveInput input (ReactiveProgram program)+ = ReactiveProgram (withReaderT (const input) program)++getReactiveInput :: Monad m => ReactiveProgram t m (ReactiveInput t)+getReactiveInput = ReactiveProgram ask++systemDraw :: (R.Reflex t, Monad m) => R.Dynamic t Picture -> ReactiveProgram t m ()+systemDraw = ReactiveProgram . R.tellDyn . fmap (\a -> mempty { systemPicture = a })++transformUserPicture+ :: (R.Reflex t, Monad m) => R.Dynamic t (Picture -> Picture) -> ReactiveProgram t m ()+transformUserPicture =+ ReactiveProgram . R.tellDyn . fmap (\a -> mempty { userTransform = a })++-- | Type class for the builder monad of a CodeWorld/Reflex app.+class (R.Reflex t, R.MonadHold t m, MonadFix m, R.PerformEvent t m,+ R.Adjustable t m, MonadIO (R.Performable m), R.PostBuild t m)+ => ReflexCodeWorld t m | m -> t where+ -- | Gets an Event of key presses. The event value is a logical key name.+ getKeyPress :: m (R.Event t Text)++ -- | Gets an Event of key presses. The event value is a logical key name.+ getKeyRelease :: m (R.Event t Text)++ -- | Gets an Event of text entered. The event value is the typed text.+ getTextEntry :: m (R.Event t Text)++ -- | Gets an event of pointer clicks. The event value is the location of+ -- the click.+ getPointerClick :: m (R.Event t Point)++ -- | Gets the Dynamic position of the pointer.+ getPointerPosition :: m (R.Dynamic t Point)++ -- | Gets a Dynamic indicator whether the pointer is held down.+ isPointerDown :: m (R.Dynamic t Bool)++ -- | Gets an Event indicating the passage of time.+ getTimePassing :: m (R.Event t Double)++ -- | Emits a given Dynamic picture to be drawn to the screen.+ draw :: R.Dynamic t Picture -> m ()++instance (R.Reflex t, R.MonadHold t m, MonadFix m, R.PerformEvent t m,+ R.Adjustable t m, MonadIO (R.Performable m), R.PostBuild t m)+ => ReflexCodeWorld t (ReactiveProgram t m) where+ getKeyPress = ReactiveProgram $ asks keyPress++ getKeyRelease = ReactiveProgram $ asks keyRelease++ getTextEntry = ReactiveProgram $ asks textEntry++ getPointerClick = ReactiveProgram $ asks pointerPress++ getPointerPosition = ReactiveProgram $ asks pointerPosition++ isPointerDown = ReactiveProgram $ asks pointerDown++ getTimePassing = ReactiveProgram $ asks timePassing++ draw = ReactiveProgram . R.tellDyn . fmap (\a -> mempty { userPictures = [a] })++splitDyn :: forall t a. R.Reflex t => R.Dynamic t (a -> Bool) -> R.Event t a -> (R.Event t a, R.Event t a)+splitDyn predicate e = R.fanEither $ R.attachPromptlyDynWith f predicate e+ where f pred val = if pred val then Right val else Left val++gateDyn :: forall t a. R.Reflex t => R.Dynamic t Bool -> R.Event t a -> R.Event t a+gateDyn dyn e = R.switchDyn (bool R.never e <$> dyn)++#ifdef ghcjs_HOST_OS++createPhysicalReactiveInput+ :: forall t m. (R.MonadReflexCreateTrigger t m, R.Reflex t, R.MonadHold t m)+ => Window+ -> Element+ -> ([DSum (R.EventTrigger t) Identity] -> IO ())+ -> m (ReactiveInput t)+createPhysicalReactiveInput window canvas fire = do+ keyPress <- R.newEventWithTrigger $ \trigger ->+ on window keyDown $ do+ keyName <- keyCodeToText <$> (getKeyCode =<< event)+ when (keyName /= "") $ do+ liftIO $ fire [ trigger ==> keyName ]+ preventDefault+ stopPropagation+ textEntry <- R.newEventWithTrigger $ \trigger ->+ on window keyDown $ do+ key <- getKey =<< event+ when (T.length key == 1) $ do+ liftIO $ fire [trigger ==> key]+ preventDefault+ stopPropagation+ keyRelease <- R.newEventWithTrigger $ \trigger ->+ on window keyUp $ do+ keyName <- keyCodeToText <$> (getKeyCode =<< event)+ when (keyName /= "") $ do+ liftIO $ fire [trigger ==> keyName]+ preventDefault+ stopPropagation+ pointerPress <- R.newEventWithTrigger $ \trigger ->+ on window mouseDown $ do+ pos <- getMousePos canvas+ liftIO $ fire [trigger ==> pos]+ pointerRelease <- R.newEventWithTrigger $ \trigger ->+ on window mouseUp $ do+ pos <- getMousePos canvas+ liftIO $ fire [trigger ==> pos]+ pointerMovement <- R.newEventWithTrigger $ \trigger ->+ on window mouseMove $ do+ pos <- getMousePos canvas+ liftIO $ fire [trigger ==> pos]++ timePassing <- R.newEventWithTrigger $ \trigger -> do+ active <- newIORef True+ let timeStep t1 t2 = do+ stillActive <- readIORef active+ when stillActive $ do+ when (t2 > t1) $ fire [+ trigger ==> min 0.25 ((t2 - t1) / 1000)]+ void $ inAnimationFrame ContinueAsync (timeStep t2)+ t0 <- nextFrame+ void $ inAnimationFrame ContinueAsync (timeStep t0)+ return (writeIORef active False)++ pointerPosition <- R.holdDyn (0, 0) pointerMovement+ pointerDown <- R.holdDyn False $+ R.mergeWith (&&) [True <$ pointerPress, False <$ pointerRelease]++ return ReactiveInput{..}++inspectLogicalInput+ :: forall t m. (R.Reflex t, R.MonadHold t m)+ => R.Dynamic t DebugState+ -> ReactiveInput t+ -> m (ReactiveInput t)+inspectLogicalInput debugState physicalInput = do+ -- Physical inputs should either be frozen or dropped during debugging.+ let filterInDebugMode :: forall a. R.Event t a -> R.Event t a+ filterInDebugMode = gateDyn (not . debugStateActive <$> debugState)+ let freezeInDebugMode :: forall a. R.Dynamic t a -> a -> m (R.Dynamic t a)+ freezeInDebugMode dyn initial =+ R.holdDyn initial (filterInDebugMode (R.updated dyn))++ logicalPointerPosition <- freezeInDebugMode (pointerPosition physicalInput) (0, 0)+ logicalPointerDown <- freezeInDebugMode (pointerDown physicalInput) False++ return $ ReactiveInput {+ keyPress = filterInDebugMode (keyPress physicalInput),+ keyRelease = filterInDebugMode (keyRelease physicalInput),+ textEntry = filterInDebugMode (textEntry physicalInput),+ pointerPress = filterInDebugMode (pointerPress physicalInput),+ pointerRelease = filterInDebugMode (pointerRelease physicalInput),+ pointerPosition = logicalPointerPosition,+ pointerDown = logicalPointerDown,+ timePassing = filterInDebugMode (timePassing physicalInput)+ }++runReactive+ :: (forall t m. (R.Reflex t, R.MonadHold t m, MonadFix m, R.PerformEvent t m,+ R.Adjustable t m, MonadIO (R.Performable m), R.PostBuild t m)+ => (ReactiveInput t -> m (R.Dynamic t Picture, R.Dynamic t Picture)))+ -> IO ()+runReactive program = do+ showCanvas++ Just window <- currentWindow+ Just doc <- currentDocument+ Just canvas <- getElementById doc ("screen" :: JSString)+ setCanvasSize canvas canvas++ frameRenderer <- createFrameRenderer canvas+ pendingFrame <- liftIO $ newMVar Nothing+ let asyncRender pic = do+ old <- swapMVar pendingFrame (Just pic)+ when (isNothing old) $ void $ inAnimationFrame ContinueAsync $ \ _t -> do+ pic <- swapMVar pendingFrame Nothing+ maybe (return ()) frameRenderer pic++ (postBuild, postBuildTriggerRef) <- R.runSpiderHost R.newEventWithTriggerRef++ (debugUpdate, debugUpdateTriggerRef) <- R.runSpiderHost R.newEventWithTriggerRef+ debugState <- R.runSpiderHost $ R.holdUniqDyn =<< R.foldDyn ($) debugStateInit debugUpdate++ rec+ physicalInput <- R.runSpiderHost $+ createPhysicalReactiveInput window canvas fireAndRedraw+ resizeEvent <- R.runSpiderHost $ R.newEventWithTrigger $ \trigger -> do+ on window resize $ liftIO $ fireAndRedraw [trigger ==> ()]+ logicalInput <- R.runSpiderHost $ inspectLogicalInput debugState physicalInput+ (inspectPicture, fireCommand) <- R.runSpiderHost $ R.hostPerformEventT $ do+ (inspectPicture, displayPicture) <- R.runPostBuildT (program logicalInput) postBuild+ let logicalPicture = drawDebugState <$> debugState+ <*> inspectPicture+ <*> displayPicture+ R.performEvent_ $ liftIO <$> R.mergeWith const [+ (setCanvasSize canvas canvas >>) . asyncRender <$>+ R.tagPromptlyDyn logicalPicture resizeEvent,+ asyncRender <$> R.updated logicalPicture,+ asyncRender <$> R.tagPromptlyDyn logicalPicture postBuild+ ]+ return inspectPicture++ let fireAndRedraw events = R.runSpiderHost $ void $+ R.runFireCommand fireCommand events (return ())++ let fireDebugUpdateAndRedraw f = R.runSpiderHost $ do+ state <- readRef debugUpdateTriggerRef+ case state of+ Just trigger -> void $+ R.runFireCommand fireCommand [trigger ==> f] (return ())+ Nothing -> return ()+ let samplePicture = R.runSpiderHost $ R.runHostFrame $ R.sample $ R.current inspectPicture+ connectInspect canvas samplePicture fireDebugUpdateAndRedraw++ maybePostBuildTrigger <- readRef postBuildTriggerRef+ case maybePostBuildTrigger of+ Just trigger -> R.runSpiderHost $ void $+ R.runFireCommand fireCommand [trigger ==> ()] (return ())+ Nothing -> return ()++ waitForever++#else++runReactive+ :: (forall t m. (R.Reflex t, R.MonadHold t m, MonadFix m, R.PerformEvent t m,+ R.Adjustable t m, MonadIO (R.Performable m), R.PostBuild t m)+ => (ReactiveInput t -> m (R.Dynamic t Picture, R.Dynamic t Picture)))+ -> IO ()+runReactive program = runBlankCanvas $ \context -> do+ let cw = Canvas.width context+ let ch = Canvas.height context+ offscreenCanvas <- runCanvasM context $ CM.newImage cw ch++ let frame pic = runCanvasM context $ do+ CM.withImage offscreenCanvas $+ CM.saveRestore $ do+ setupScreenContext cw ch+ drawFrame pic+ CM.drawImage offscreenCanvas 0 0 cw ch++ (postBuild, postBuildTriggerRef) <- R.runSpiderHost R.newEventWithTriggerRef++ (keyPress, keyPressTrigger) <- R.runSpiderHost R.newEventWithTriggerRef+ (textEntry, textEntryTrigger) <- R.runSpiderHost R.newEventWithTriggerRef+ (keyRelease, keyReleaseTrigger) <- R.runSpiderHost R.newEventWithTriggerRef+ (pointerPress, pointerPressTrigger) <- R.runSpiderHost R.newEventWithTriggerRef+ (pointerRelease, pointerReleaseTrigger) <- R.runSpiderHost R.newEventWithTriggerRef+ (pointerMovement, pointerMovementTrigger) <- R.runSpiderHost R.newEventWithTriggerRef+ (timePassing, timePassingTrigger) <- R.runSpiderHost R.newEventWithTriggerRef++ pointerPosition <- R.runSpiderHost $ R.holdDyn (0, 0) pointerMovement+ pointerDown <- R.runSpiderHost $ R.holdDyn False $+ R.mergeWith (&&) [True <$ pointerPress, False <$ pointerRelease]++ let input = ReactiveInput{..}++ (_, fireCommand) <- R.runSpiderHost $ R.hostPerformEventT $ do+ (_inspectPicture, displayPicture) <- R.runPostBuildT (program input) postBuild+ R.performEvent_ $ liftIO <$> R.mergeWith const [+ frame <$> R.updated displayPicture,+ frame <$> R.tagPromptlyDyn displayPicture postBuild+ ]+ return ()++ let sendEvent :: forall a. IORef (Maybe (R.EventTrigger (R.SpiderTimeline R.Global) a)) -> a -> IO ()+ sendEvent triggerRef val = do+ mtrigger <- readRef triggerRef+ case mtrigger of+ Just trigger -> R.runSpiderHost $ void $+ R.runFireCommand fireCommand [trigger ==> val] (return ())+ Nothing -> return ()++ maybePostBuildTrigger <- readRef postBuildTriggerRef+ case maybePostBuildTrigger of+ Just trigger -> R.runSpiderHost $ void $+ R.runFireCommand fireCommand [trigger ==> ()] (return ())+ Nothing -> return ()++ t0 <- getCurrentTime+ let go t1 = do+ events <- Canvas.flush context+ forM_ events $ \event -> case Canvas.eType event of+ "keydown" | Just code <- Canvas.eWhich event -> do+ let keyName = keyCodeToText (fromIntegral code)+ sendEvent keyPressTrigger keyName+ when (T.length keyName == 1) $ sendEvent textEntryTrigger keyName+ "keyup" | Just code <- Canvas.eWhich event -> do+ let keyName = keyCodeToText (fromIntegral code)+ sendEvent keyReleaseTrigger keyName+ "mousedown" | Just pos <- getMousePos (cw, ch) <$> Canvas.ePageXY event -> do+ sendEvent pointerPressTrigger pos+ "mouseup" | Just pos <- getMousePos (cw, ch) <$> Canvas.ePageXY event -> do+ sendEvent pointerReleaseTrigger pos+ "mousemove" | Just pos <- getMousePos (cw, ch) <$> Canvas.ePageXY event -> do+ sendEvent pointerMovementTrigger pos+ _ -> return ()++ tn <- getCurrentTime+ threadDelay $ max 0 (50000 - (round ((tn `diffUTCTime` t0) * 1000000)))+ t2 <- getCurrentTime+ let dt = realToFrac (t2 `diffUTCTime` t1)+ sendEvent timePassingTrigger dt+ go t2+ go t0++#endif
+ src/CodeWorld/EntryPoints.hs view
@@ -0,0 +1,936 @@+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE MagicHash #-}+{-# LANGUAGE PatternGuards #-}+{-# LANGUAGE RecordWildCards #-}+{-# OPTIONS_GHC -Wno-name-shadowing #-}++{-+ Copyright 2019 The CodeWorld Authors. All rights reserved.++ Licensed under the Apache License, Version 2.0 (the "License");+ you may not use this file except in compliance with the License.+ You may obtain a copy of the License at++ http://www.apache.org/licenses/LICENSE-2.0++ Unless required by applicable law or agreed to in writing, software+ distributed under the License is distributed on an "AS IS" BASIS,+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+ See the License for the specific language governing permissions and+ limitations under the License.+-}+module CodeWorld.EntryPoints where++import CodeWorld.Color+import CodeWorld.Driver+import CodeWorld.Event+import CodeWorld.Picture+import Data.Text (Text)+import qualified Data.Text as T+import GHC.Prim+import GHC.StaticPtr+import GHC.Types+import Numeric (showFFloatAlt)+import System.IO+import System.IO.Unsafe+import System.Random++--------------------------------------------------------------------------------+-- Common code for activity, interaction, animation and simulation interfaces++-- | Runs an interactive CodeWorld program that responds to 'Event's.+-- Activities can interact with the user, change over time, and remember+-- information about the past.+--+-- Example: a program which draws a circle and changes its radius when user+-- presses Up or Down keys on her keyboard+--+-- @+-- {-\# LANGUAGE OverloadedStrings \#-}+-- import CodeWorld+--+-- main = activityOf initialRadius updateRadius circle+-- where+-- initialRadius = 1+--+-- updateRadius event radius =+-- case event of+-- KeyPress "Up" -> radius + 1+-- KeyPress "Down" -> radius - 1+-- _ -> radius+-- @+activityOf ::+ -- | The initial state of the activity.+ world ->+ -- | The event handling function, which updates+ -- the state given an event.+ (Event -> world -> world) ->+ -- | The visualization function, which converts+ -- the state into a picture to display.+ (world -> Picture) ->+ IO ()+activityOf initial change picture =+ interactionOf initial (const id) change picture++-- | Runs an interactive event-driven CodeWorld program. This is a+-- generalization of simulations that can respond to events like key presses+-- and mouse movement.+interactionOf ::+ -- | The initial state of the interaction.+ world ->+ -- | The time step function, which advances+ -- the state given the time difference.+ (Double -> world -> world) ->+ -- | The event handling function, which updates+ -- the state given a user interface event.+ (Event -> world -> world) ->+ -- | The visualization function, which converts+ -- the state into a picture to display.+ (world -> Picture) ->+ IO ()+interactionOf initial step event draw = do+ hFlush stdout+ runInspect initial step event draw draw+{-# WARNING+ interactionOf+ [ "Please use activityOf instead of interactionOf.",+ "interactionOf may be removed July 2020."+ ]+ #-}++data Timeline a+ = Timeline+ { past :: [a], -- reversed list of past states+ present :: !a, -- present state+ future :: [a] -- list of future states+ }++newTimeline :: a -> Timeline a+newTimeline x = Timeline [] x []++applyToTimeline :: (a -> a) -> Timeline a -> Timeline a+applyToTimeline f timeline@Timeline {..}+ | identical present new = timeline+ | otherwise = Timeline (present : past) new []+ where+ new = f present++undoTimeline :: Timeline a -> Timeline a+undoTimeline timeline@Timeline {..} = case past of+ [] -> timeline+ (x : xs) -> Timeline xs x (present : future)++redoTimeline :: Timeline a -> Timeline a+redoTimeline timeline@Timeline {..} = case future of+ [] -> timeline+ (x : xs) -> Timeline (present : past) x xs++restartTimeline :: Timeline a -> Timeline a+restartTimeline timeline@Timeline {..}+ | null past = timeline+ | otherwise = Timeline [] x (xs ++ present : future)+ where+ x : xs = reverse past++timelineLength :: Timeline a -> Int+timelineLength Timeline {..} = length past + 1 + length future++travelToTime :: Double -> Timeline a -> Timeline a+travelToTime t timeline@Timeline {..}+ | diff >= 0 = iterate redoTimeline timeline !! diff+ | otherwise = iterate undoTimeline timeline !! (- diff)+ where+ desiredPast = round (t * (fromIntegral (timelineLength timeline - 1)))+ actualPast = length past+ diff = desiredPast - actualPast++timelinePos :: Timeline a -> Double+timelinePos Timeline {..}+ | null past && null future = 1+ | otherwise = fromIntegral (length past) / fromIntegral (length past + length future)++data Control :: * -> * where+ PlayButton :: Point -> Control a+ PauseButton :: Point -> Control a+ StepButton :: Point -> Control a+ RestartButton :: Point -> Control Double+ ZoomInButton :: Point -> Control a+ ZoomOutButton :: Point -> Control a+ PanningLayer :: Control a+ ResetViewButton :: Point -> Control a+ FastForwardButton :: Point -> Control a+ StartOverButton :: Point -> Control (Timeline a)+ BackButton :: Point -> Control Double+ TimeLabel :: Point -> Control Double+ SpeedSlider :: Point -> Control a+ ZoomSlider :: Point -> Control a+ UndoButton :: Point -> Control (Timeline a)+ RedoButton :: Point -> Control (Timeline a)+ HistorySlider :: Point -> Control (Timeline a)++data StrictPoint = SP !Double !Double deriving (Eq, Show)++data StrictMaybe a = SNothing | SJust !a deriving (Functor, Show)++data Wrapped a+ = Wrapped+ { state :: a,+ playbackSpeed :: !Double,+ lastInteractionTime :: !Double,+ zoomFactor :: !Double,+ panCenter :: !StrictPoint,+ panDraggingAnchor :: !(StrictMaybe StrictPoint),+ isDraggingSpeed :: !Bool,+ isDraggingHistory :: !Bool,+ isDraggingZoom :: !Bool+ }+ deriving (Show, Functor)++wrappedInitial :: a -> Wrapped a+wrappedInitial w = Wrapped+ { state = w,+ playbackSpeed = 1,+ lastInteractionTime = 1000,+ zoomFactor = 1,+ panCenter = SP 0 0,+ panDraggingAnchor = SNothing,+ isDraggingSpeed = False,+ isDraggingHistory = False,+ isDraggingZoom = False+ }++identical :: a -> a -> Bool+identical !x !y = isTrue# (reallyUnsafePtrEquality# x y)++toState :: (a -> a) -> (Wrapped a -> Wrapped a)+toState f w+ | identical s s' = w+ | otherwise = w {state = s'}+ where+ s = state w+ s' = f s++wrappedStep :: (Double -> a -> a) -> Double -> Wrapped a -> Wrapped a+wrappedStep f dt w+ | playbackSpeed w == 0 = w+ | otherwise = toState (f (dt * playbackSpeed w)) w++wrappedEvent ::+ (Wrapped a -> [Control a]) ->+ (Double -> a -> a) ->+ (Event -> a -> a) ->+ Event ->+ Wrapped a ->+ Wrapped a+wrappedEvent ctrls stepHandler eventHandler event = markInteraction . handleChange+ where+ markInteraction w+ | TimePassing _ <- event, lastInteractionTime w > 5 = w+ | TimePassing dt <- event = w {lastInteractionTime = lastInteractionTime w + dt}+ | otherwise = w {lastInteractionTime = 0}+ handleChange w0+ | playbackSpeed w0 == 0 || handled = w1+ | otherwise = toState (eventHandler (adaptEvent event)) w1+ where+ (w1, handled) = foldr doCtrl (w0, False) (ctrls w0)+ doCtrl _ (w, True) = (w, True)+ doCtrl ctrl (w, False) = handleControl fullStep event ctrl w+ fullStep dt = stepHandler dt . eventHandler (TimePassing dt)+ adaptEvent (PointerMovement p) = PointerMovement (adaptPoint p)+ adaptEvent (PointerPress p) = PointerPress (adaptPoint p)+ adaptEvent (PointerRelease p) = PointerRelease (adaptPoint p)+ adaptEvent (TimePassing dt) = TimePassing (dt * playbackSpeed w0)+ adaptEvent other = other+ adaptPoint (x, y) = (x / k - dx, y / k - dy)+ SP dx dy = panCenter w1+ k = zoomFactor w1++scaleRange :: (Double, Double) -> (Double, Double) -> Double -> Double+scaleRange (a1, b1) (a2, b2) x = min b2 $ max a2 $ (x - a1) / (b1 - a1) * (b2 - a2) + a2++snapSlider :: Double -> [Double] -> Double -> Double+snapSlider eps targets val = foldr snap val targets+ where+ snap t v+ | abs (t - v) < eps = t+ | otherwise = v++xToPlaybackSpeed :: Double -> Double+xToPlaybackSpeed x = snapSlider 0.2 [1 .. 4] $ scaleRange (-1.4, 1.4) (0, 5) x++playbackSpeedToX :: Double -> Double+playbackSpeedToX s = scaleRange (0, 5) (-1.4, 1.4) s++zoomIncrement :: Double+zoomIncrement = 8 ** (1 / 10)++yToZoomFactor :: Double -> Double+yToZoomFactor y = zoomIncrement ** (scaleRange (-1.4, 1.4) (-10, 10) y)++zoomFactorToY :: Double -> Double+zoomFactorToY z = scaleRange (-10, 10) (-1.4, 1.4) (logBase zoomIncrement z)++handleControl ::+ (Double -> a -> a) -> Event -> Control a -> Wrapped a -> (Wrapped a, Bool)+handleControl _ (PointerPress (x, y)) (RestartButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {state = 0}, True)+handleControl _ (PointerPress (x, y)) (StartOverButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (restartTimeline <$> w, True)+handleControl _ (PointerPress (x, y)) (PlayButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {playbackSpeed = 1}, True)+handleControl _ (PointerPress (x, y)) (PauseButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {playbackSpeed = 0}, True)+handleControl _ (PointerPress (x, y)) (FastForwardButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {playbackSpeed = max 2 (playbackSpeed w + 1)}, True)+handleControl _ (PointerPress (x, y)) (ZoomInButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {zoomFactor = zoomFactor w * zoomIncrement}, True)+handleControl _ (PointerPress (x, y)) (ZoomOutButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {zoomFactor = zoomFactor w / zoomIncrement}, True)+handleControl _ (PointerPress (x, y)) (ResetViewButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {zoomFactor = 1, panCenter = SP 0 0}, True)+handleControl _ (PointerPress (x, y)) (BackButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (max 0 . (subtract 0.1) <$> w, True)+handleControl _ (PointerPress (x, y)) (UndoButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (undoTimeline <$> w, True)+handleControl _ (PointerPress (x, y)) (RedoButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (redoTimeline <$> w, True)+handleControl f (PointerPress (x, y)) (StepButton (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 0.4 = (w {state = f 0.1 (state w)}, True)+handleControl _ (PointerPress (x, y)) (SpeedSlider (cx, cy)) w+ | abs (x - cx) < 1.5 && abs (y - cy) < 0.4 =+ (w {playbackSpeed = xToPlaybackSpeed (x - cx), isDraggingSpeed = True}, True)+handleControl _ (PointerMovement (x, _)) (SpeedSlider (cx, _)) w+ | isDraggingSpeed w = (w {playbackSpeed = xToPlaybackSpeed (x - cx)}, True)+handleControl _ (PointerRelease (x, _)) (SpeedSlider (cx, _)) w+ | isDraggingSpeed w = (w {playbackSpeed = xToPlaybackSpeed (x - cx), isDraggingSpeed = False}, True)+handleControl _ (PointerPress (x, y)) (ZoomSlider (cx, cy)) w+ | abs (x - cx) < 0.4 && abs (y - cy) < 1.5 =+ (w {zoomFactor = yToZoomFactor (y - cy), isDraggingZoom = True}, True)+handleControl _ (PointerMovement (_, y)) (ZoomSlider (_, cy)) w+ | isDraggingZoom w = (w {zoomFactor = yToZoomFactor (y - cy)}, True)+handleControl _ (PointerRelease (_, y)) (ZoomSlider (_, cy)) w+ | isDraggingZoom w = (w {zoomFactor = yToZoomFactor (y - cy), isDraggingZoom = False}, True)+handleControl _ (PointerPress (x, y)) (HistorySlider (cx, cy)) w+ | abs (x - cx) < 2.5 && abs (y - cy) < 0.4 =+ (travelToTime (1 / 2 + (x - cx) / 4.8) <$> w {isDraggingHistory = True}, True)+handleControl _ (PointerMovement (x, _)) (HistorySlider (cx, _)) w+ | isDraggingHistory w = (travelToTime (1 / 2 + (x - cx) / 4.8) <$> w, True)+handleControl _ (PointerRelease (x, _)) (HistorySlider (cx, _)) w+ | isDraggingHistory w = (travelToTime (1 / 2 + (x - cx) / 4.8) <$> w {isDraggingHistory = False}, True)+handleControl _ (PointerPress (x, y)) PanningLayer w =+ (w {panDraggingAnchor = SJust (SP x y)}, True)+handleControl _ (PointerMovement (x, y)) PanningLayer w+ | SJust (SP ax ay) <- panDraggingAnchor w,+ SP px py <- panCenter w =+ ( w+ { panCenter =+ SP+ (px + (x - ax) / zoomFactor w)+ (py + (y - ay) / zoomFactor w),+ panDraggingAnchor = SJust (SP x y)+ },+ True+ )+handleControl _ (PointerRelease _) PanningLayer w+ | SJust _ <- panDraggingAnchor w = (w {panDraggingAnchor = SNothing}, True)+handleControl _ _ _ w = (w, False)++wrappedDraw ::+ (Wrapped a -> [Control a]) -> (a -> Picture) -> Wrapped a -> Picture+wrappedDraw ctrls f w = drawControlPanel ctrls w <> dilated k (translated dx dy (f (state w)))+ where+ SP dx dy = panCenter w+ k = zoomFactor w++drawControlPanel :: (Wrapped a -> [Control a]) -> Wrapped a -> Picture+drawControlPanel ctrls w+ | alpha > 0 = pictures [drawControl w alpha c | c <- ctrls w]+ | otherwise = blank+ where+ alpha+ | lastInteractionTime w < 4.5 = 1+ | lastInteractionTime w < 5.0 = 10 - 2 * lastInteractionTime w+ | otherwise = 0++drawControl :: Wrapped a -> Double -> Control a -> Picture+drawControl _ alpha (RestartButton (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( thickArc 0.1 (pi / 6) (11 * pi / 6) 0.2+ <> translated 0.173 (-0.1) (solidRectangle 0.17 0.17)+ )+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl _ alpha (StartOverButton (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( thickArc 0.1 (pi / 6) (11 * pi / 6) 0.2+ <> translated 0.173 (-0.1) (solidRectangle 0.17 0.17)+ )+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl _ alpha (PlayButton (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ (solidPolygon [(-0.2, 0.25), (-0.2, -0.25), (0.2, 0)])+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl _ alpha (PauseButton (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( translated (-0.15) 0 (solidRectangle 0.2 0.6)+ <> translated 0.15 0 (solidRectangle 0.2 0.6)+ )+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl _ alpha (FastForwardButton (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( solidPolygon [(-0.3, 0.25), (-0.3, -0.25), (-0.05, 0)]+ <> solidPolygon [(0.05, 0.25), (0.05, -0.25), (0.3, 0)]+ )+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl _ alpha (ZoomInButton (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( translated+ (-0.05)+ (0.05)+ ( thickCircle 0.1 0.22+ <> solidRectangle 0.06 0.25+ <> solidRectangle 0.25 0.06+ <> rotated (- pi / 4) (translated 0.35 0 (solidRectangle 0.2 0.1))+ )+ )+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl _ alpha (ZoomOutButton (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( translated+ (-0.05)+ (0.05)+ ( thickCircle 0.1 0.22+ <> solidRectangle 0.25 0.06+ <> rotated (- pi / 4) (translated 0.35 0 (solidRectangle 0.2 0.1))+ )+ )+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl _ _ PanningLayer = blank+drawControl _ alpha (ResetViewButton (x, y)) = translated x y p+ where+ p =+ colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.7 0.2)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.2 0.7)+ <> colored (RGBA 0.0 0.0 0.0 alpha) (thickRectangle 0.1 0.5 0.5)+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl _ alpha (BackButton (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( translated 0.15 0 (solidRectangle 0.2 0.5)+ <> solidPolygon [(-0.05, 0.25), (-0.05, -0.25), (-0.3, 0)]+ )+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl _ alpha (UndoButton (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( translated 0.15 0 (solidRectangle 0.2 0.5)+ <> solidPolygon [(-0.05, 0.25), (-0.05, -0.25), (-0.3, 0)]+ )+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl _ alpha (StepButton (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( translated (-0.15) 0 (solidRectangle 0.2 0.5)+ <> solidPolygon [(0.05, 0.25), (0.05, -0.25), (0.3, 0)]+ )+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl _ alpha (RedoButton (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( translated (-0.15) 0 (solidRectangle 0.2 0.5)+ <> solidPolygon [(0.05, 0.25), (0.05, -0.25), (0.3, 0)]+ )+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.8 0.8)+drawControl w alpha (TimeLabel (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ (scaled 0.5 0.5 $ lettering (T.pack (showFFloatAlt (Just 4) (state w) "s")))+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 3.0 0.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 3.0 0.8)+drawControl w alpha (SpeedSlider (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( translated xoff 0.75 $ scaled 0.5 0.5 $+ lettering (T.pack (showFFloatAlt (Just 2) (playbackSpeed w) "x"))+ )+ <> colored (RGBA 0 0 0 alpha) (translated xoff 0 (solidRectangle 0.2 0.8))+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 2.8 0.25)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 2.8 0.25)+ xoff = playbackSpeedToX (playbackSpeed w)+drawControl w alpha (ZoomSlider (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( translated (-1.1) yoff $ scaled 0.5 0.5 $+ lettering (T.pack (show (round (zoomFactor w * 100) :: Int) ++ "%"))+ )+ <> colored (RGBA 0 0 0 alpha) (translated 0 yoff (solidRectangle 0.8 0.2))+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 0.25 2.8)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 0.25 2.8)+ yoff = zoomFactorToY (zoomFactor w)+drawControl w alpha (HistorySlider (x, y)) = translated x y p+ where+ p =+ colored+ (RGBA 0 0 0 alpha)+ ( translated xoff 0.75 $ scaled 0.5 0.5 $+ lettering (T.pack (show i ++ "/" ++ show n))+ )+ <> colored (RGBA 0.0 0.0 0.0 alpha) (translated xoff 0 (solidRectangle 0.2 0.8))+ <> colored (RGBA 0.2 0.2 0.2 alpha) (rectangle 4.8 0.25)+ <> colored (RGBA 0.8 0.8 0.8 alpha) (solidRectangle 4.8 0.25)+ xoff = timelinePos (state w) * 4.8 - 2.4+ i = 1 + length (past (state w))+ n = timelineLength (state w)++drawingControls :: Wrapped () -> [Control ()]+drawingControls w+ | lastInteractionTime w > 5 = []+ | otherwise = commonControls ++ resetViewButton+ where+ commonControls =+ [ PanningLayer,+ ZoomInButton (9, -4),+ ZoomOutButton (9, -8),+ ZoomSlider (9, -6)+ ]+ resetViewButton+ | zoomFactor w /= 1 || panCenter w /= SP 0 0 = [ResetViewButton (9, -3)]+ | otherwise = []++-- | Draws a 'Picture'. This is the simplest CodeWorld entry point.+--+-- Example: a program which draws a circle of radius 1 in the middle of canvas+--+-- @+-- main = drawingOf $ circle 1+-- @+drawingOf ::+ -- | The picture to show on the screen.+ Picture ->+ IO ()+drawingOf pic = do+ hFlush stdout+ runInspect+ (wrappedInitial ())+ (wrappedStep step)+ (wrappedEvent drawingControls step event)+ (wrappedDraw drawingControls draw)+ (draw . state)+ where+ step _ _ = ()+ event _ _ = ()+ draw _ = pic++animationControls :: Wrapped Double -> [Control Double]+animationControls w+ | lastInteractionTime w > 5 = []+ | otherwise =+ commonControls ++ pauseDependentControls+ ++ backButton+ ++ resetViewButton+ where+ commonControls =+ [ PanningLayer,+ RestartButton (-9, -9),+ TimeLabel (8, -9),+ SpeedSlider (-3, -9),+ FastForwardButton (-1, -9),+ ZoomInButton (9, -4),+ ZoomOutButton (9, -8),+ ZoomSlider (9, -6)+ ]+ pauseDependentControls+ | playbackSpeed w == 0 = [PlayButton (-8, -9), StepButton (-6, -9)]+ | otherwise = [PauseButton (-8, -9)]+ backButton+ | playbackSpeed w == 0 && state w > 0 = [BackButton (-7, -9)]+ | otherwise = []+ resetViewButton+ | zoomFactor w /= 1 || panCenter w /= SP 0 0 = [ResetViewButton (9, -3)]+ | otherwise = []++-- | Shows an animation, with a picture for each time given by the parameter.+--+-- Example: a program showing a square which rotates once every two seconds+--+-- @+-- main = animationOf rotatingSquare+--+-- rotatingSquare :: Double -> Picture+-- rotatingSquare seconds = rotated angle square+-- where+-- square = rectangle 2 2+-- angle = pi * seconds+-- @+animationOf ::+ -- | A function that produces animation+ -- frames, given the time in seconds.+ (Double -> Picture) ->+ IO ()+animationOf f = do+ hFlush stdout+ runInspect+ (wrappedInitial 0)+ (wrappedStep (+))+ (wrappedEvent animationControls (+) (const id))+ (wrappedDraw animationControls f)+ (f . state)++simulationControls :: Wrapped w -> [Control w]+simulationControls w+ | lastInteractionTime w > 5 = []+ | otherwise = commonControls ++ pauseDependentControls ++ resetViewButton+ where+ commonControls =+ [ PanningLayer,+ FastForwardButton (-4, -9),+ SpeedSlider (-6, -9),+ ZoomInButton (9, -4),+ ZoomOutButton (9, -8),+ ZoomSlider (9, -6)+ ]+ pauseDependentControls+ | playbackSpeed w == 0 = [PlayButton (-8, -9), StepButton (-2, -9)]+ | otherwise = [PauseButton (-8, -9)]+ resetViewButton+ | zoomFactor w /= 1 || panCenter w /= SP 0 0 = [ResetViewButton (9, -3)]+ | otherwise = []++statefulDebugControls :: Wrapped (Timeline w) -> [Control (Timeline w)]+statefulDebugControls w+ | lastInteractionTime w > 5 = []+ | otherwise =+ panningLayer ++ pauseDependentControls ++ commonControls+ ++ resetViewButton+ where+ hasHistory = not (null (past (state w)))+ hasFuture = not (null (future (state w)))+ advance+ | hasFuture = [RedoButton (6, -9)]+ | otherwise = [StepButton (6, -9)]+ regress+ | hasHistory = [UndoButton (0, -9)]+ | otherwise = []+ commonControls =+ [ StartOverButton (-1, -9),+ FastForwardButton (-4, -9),+ SpeedSlider (-6, -9),+ ZoomInButton (9, -4),+ ZoomOutButton (9, -8),+ ZoomSlider (9, -6)+ ]+ pauseDependentControls+ | playbackSpeed w == 0 =+ [PlayButton (-8, -9), HistorySlider (3, -9)] ++ advance ++ regress+ | otherwise = [PauseButton (-8, -9)]+ resetViewButton+ | zoomFactor w /= 1 || panCenter w /= SP 0 0 = [ResetViewButton (9, -3)]+ | otherwise = []+ panningLayer+ | playbackSpeed w == 0 = [PanningLayer]+ | otherwise = []++-- | Shows a simulation, which is essentially a continuous-time dynamical+-- system described by an initial value and step function.+simulationOf ::+ -- | The initial state of the simulation.+ world ->+ -- | The time step function, which advances+ -- the state given the time difference.+ (Double -> world -> world) ->+ -- | The visualization function, which converts+ -- the state into a picture to display.+ (world -> Picture) ->+ IO ()+simulationOf initial step draw = do+ hFlush stdout+ runInspect+ (wrappedInitial initial)+ (wrappedStep step)+ (wrappedEvent simulationControls step (const id))+ (wrappedDraw simulationControls draw)+ (draw . state)+{-# WARNING+ simulationOf+ [ "Please use activityOf instead of simulationOf.",+ "simulationOf may be removed July 2020."+ ]+ #-}++debugSimulationOf ::+ -- | The initial state of the simulation.+ world ->+ -- | The time step function, which advances+ -- the state given the time difference.+ (Double -> world -> world) ->+ -- | The visualization function, which converts+ -- the state into a picture to display.+ (world -> Picture) ->+ IO ()+debugSimulationOf simInitial simStep simDraw = do+ hFlush stdout+ runInspect+ (wrappedInitial initial)+ (wrappedStep step)+ (wrappedEvent statefulDebugControls step (const id))+ (wrappedDraw statefulDebugControls draw)+ (draw . state)+ where+ initial = newTimeline simInitial+ step = applyToTimeline . simStep+ draw = simDraw . present+{-# WARNING+ debugSimulationOf+ [ "Please use debugActivityOf instead of debugSimulationOf.",+ "debugSimulationOf may be removed July 2020."+ ]+ #-}++debugInteractionOf ::+ -- | The initial state of the interaction.+ world ->+ -- | The time step function, which advances+ -- the state given the time difference.+ (Double -> world -> world) ->+ -- | The event handling function, which updates+ -- the state given a user interface event.+ (Event -> world -> world) ->+ -- | The visualization function, which converts+ -- the state into a picture to display.+ (world -> Picture) ->+ IO ()+debugInteractionOf baseInitial baseStep baseEvent baseDraw = do+ hFlush stdout+ runInspect+ (wrappedInitial initial)+ (wrappedStep step)+ (wrappedEvent statefulDebugControls step event)+ (wrappedDraw statefulDebugControls draw)+ (draw . state)+ where+ initial = newTimeline baseInitial+ step = applyToTimeline . baseStep+ event = applyToTimeline . baseEvent+ draw = baseDraw . present+{-# WARNING+ debugInteractionOf+ [ "Please use debugActivityOf instead of debugInteractionOf.",+ "debugInteractionOf may be removed July 2020."+ ]+ #-}++-- | A version of 'activityOf' which runs an interactive CodeWorld program+-- in debugging mode. In this mode, the program gets controls to pause and+-- manipulate time, and even go back in time to look at past states.+debugActivityOf ::+ -- | The initial state of the interaction.+ world ->+ -- | The event handling function, which updates+ -- the state given an event.+ (Event -> world -> world) ->+ -- | The visualization function, which converts+ -- the state into a picture to display.+ (world -> Picture) ->+ IO ()+debugActivityOf initial change picture =+ debugInteractionOf initial (const id) change picture++-- | Runs an interactive multi-user CodeWorld program that is joined by several+-- participants over the internet.+--+-- Example: a skeleton of a game for two players+--+-- @+-- {-\# LANGUAGE StaticPointers, OverloadedStrings \#-}+-- import CodeWorld+--+-- main = groupActivityOf 2 init step view+-- where+-- init = static (\\gen -> {- initialize state of the game world, possibly using random number generator -})+-- step = static (\\playerNumber event world -> {- modify world based on event occuring for given player -})+-- view = static (\\playerNumber world -> {- generate a picture that will be shown to given player in the given state of the world-})+-- @+groupActivityOf ::+ -- | The number of participants to expect. The participants will be+ -- numbered starting at 0.+ Int ->+ -- | The function to create initial state of the activity. 'System.Random.StdGen' parameter can be used to generate random numbers.+ StaticPtr (StdGen -> world) ->+ -- | The event handling function, which updates the state given a+ -- participant number and user interface event.+ StaticPtr (Int -> Event -> world -> world) ->+ -- | The visualization function, which converts a participant number+ -- and the state into a picture to display.+ StaticPtr (Int -> world -> Picture) ->+ IO ()+groupActivityOf numPlayers initial event draw = do+ hFlush stdout+ dhash <- getDeployHash+ let token =+ SteplessToken+ { tokenDeployHash = dhash,+ tokenNumPlayers = numPlayers,+ tokenInitial = staticKey initial,+ tokenEvent = staticKey event,+ tokenDraw = staticKey draw+ }+ runGame+ token+ numPlayers+ (deRefStaticPtr initial)+ (const id)+ (deRefStaticPtr event)+ (deRefStaticPtr draw)++-- | A version of 'groupActivityOf' that avoids static pointers, and does not+-- check for consistency.+unsafeGroupActivityOf ::+ -- | The number of participants to expect. The participants will be+ -- numbered starting at 0.+ Int ->+ -- | The initial state of the activity.+ (StdGen -> world) ->+ -- | The event handling function, which updates the state given a+ -- participant number and user interface event.+ (Int -> Event -> world -> world) ->+ -- | The visualization function, which converts a participant number+ -- and the state into a picture to display.+ (Int -> world -> Picture) ->+ IO ()+unsafeGroupActivityOf numPlayers initial event draw =+ unsafeCollaborationOf numPlayers initial (const id) event draw++-- | A version of 'collaborationOf' that avoids static pointers, and does not+-- check for consistent parameters.+unsafeCollaborationOf ::+ -- | The number of participants to expect. The participants will be+ -- numbered starting at 0.+ Int ->+ -- | The initial state of the collaboration.+ (StdGen -> world) ->+ -- | The time step function, which advances the state given the time+ -- difference.+ (Double -> world -> world) ->+ -- | The event handling function, which updates the state given a+ -- participant number and user interface event.+ (Int -> Event -> world -> world) ->+ -- | The visualization function, which converts a participant number+ -- and the state into a picture to display.+ (Int -> world -> Picture) ->+ IO ()+unsafeCollaborationOf numPlayers initial step event draw = do+ hFlush stdout+ dhash <- getDeployHash+ let token = PartialToken dhash+ runGame token numPlayers initial step event draw+{-# WARNING+ unsafeCollaborationOf+ [ "Please use unsafeGroupActivityOf instead of unsafeCollaborationOf.",+ "unsafeCollaborationOf may be removed July 2020."+ ]+ #-}++-- | Runs an interactive multi-user CodeWorld program, involving multiple+-- participants over the internet.+collaborationOf ::+ -- | The number of participants to expect. The participants will be+ -- numbered starting at 0.+ Int ->+ -- | The initial state of the collaboration.+ StaticPtr (StdGen -> world) ->+ -- | The time step function, which advances the state given the time+ -- difference.+ StaticPtr (Double -> world -> world) ->+ -- | The event handling function, which updates the state given a+ -- participant number and user interface event.+ StaticPtr (Int -> Event -> world -> world) ->+ -- | The visualization function, which converts a participant number+ -- and the state into a picture to display.+ StaticPtr (Int -> world -> Picture) ->+ IO ()+collaborationOf numPlayers initial step event draw = do+ hFlush stdout+ dhash <- getDeployHash+ let token =+ FullToken+ { tokenDeployHash = dhash,+ tokenNumPlayers = numPlayers,+ tokenInitial = staticKey initial,+ tokenStep = staticKey step,+ tokenEvent = staticKey event,+ tokenDraw = staticKey draw+ }+ runGame+ token+ numPlayers+ (deRefStaticPtr initial)+ (deRefStaticPtr step)+ (deRefStaticPtr event)+ (deRefStaticPtr draw)+{-# WARNING+ collaborationOf+ [ "Please use groupActivityOf instead of collaborationOf.",+ "collaborationOf may be removed July 2020."+ ]+ #-}++-- | Prints a debug message to the CodeWorld console when a value is forced.+-- This is equivalent to the similarly named function in `Debug.Trace`, except+-- that it sets appropriate buffering to use the CodeWorld console.+trace :: Text -> a -> a+trace msg x = unsafePerformIO $ do+ oldMode <- hGetBuffering stderr+ hSetBuffering stderr (BlockBuffering Nothing)+ hPutStrLn stderr (T.unpack msg)+ hFlush stderr+ hSetBuffering stderr oldMode+ return x
src/CodeWorld/Event.hs view
@@ -20,46 +20,46 @@ import CodeWorld.Picture (Point) import Data.Text (Text) -{-| An event initiated by the user.-- Values of this type represent events that the user triggers when- using an interactive program.-- Key events describe the key as 'Text'. Most keys are represented- by a single character text string, with the capital letter or other- symbol from the key. Keys that don't correspond to a single- character use longer names from the following list. Keep in mind- that not all of these keys appear on all keyboards.-- * Up, Down, Left, and Right for the cursor keys.- * F1, F2, etc. for function keys.- * Backspace- * Tab- * Enter- * Shift- * Ctrl- * Alt- * Esc- * PageUp- * PageDown- * End- * Home- * Insert- * Delete- * CapsLock- * NumLock- * ScrollLock- * PrintScreen- * Break- * Separator- * Cancel- * Help--}+-- | An event initiated by the user.+--+-- Values of this type represent events that the user triggers when+-- using an interactive program.+--+-- Key events describe the key as 'Text'. Most keys are represented+-- by a single character text string, with the capital letter or other+-- symbol from the key. Keys that don't correspond to a single+-- character use longer names from the following list. Keep in mind+-- that not all of these keys appear on all keyboards.+--+-- * Up, Down, Left, and Right for the cursor keys.+-- * F1, F2, etc. for function keys.+-- * Backspace+-- * Tab+-- * Enter+-- * Shift+-- * Ctrl+-- * Alt+-- * Esc+-- * PageUp+-- * PageDown+-- * End+-- * Home+-- * Insert+-- * Delete+-- * CapsLock+-- * NumLock+-- * ScrollLock+-- * PrintScreen+-- * Break+-- * Separator+-- * Cancel+-- * Help data Event- = KeyPress !Text- | KeyRelease !Text- | PointerPress !Point- | PointerRelease !Point- | PointerMovement !Point- | TimePassing !Double- deriving (Eq, Show, Read)+ = KeyPress !Text+ | KeyRelease !Text+ | PointerPress !Point+ | PointerRelease !Point+ | PointerMovement !Point+ | TextEntry !Text+ | TimePassing !Double+ deriving (Eq, Show, Read)
src/CodeWorld/Picture.hs view
@@ -1,4 +1,7 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-} {- Copyright 2019 The CodeWorld Authors. All rights reserved.@@ -18,13 +21,21 @@ module CodeWorld.Picture where import CodeWorld.Color+import Control.DeepSeq import Data.List import Data.Monoid ((<>))-import Data.Text (Text, pack)+import Data.Text (Text)+import GHC.Generics (Generic) import GHC.Stack+import Util.EmbedAsUrl type Point = (Double, Double) +-- | Move given point by given X-axis and Y-axis offsets+-- >>> translatedPoint 1 2 (10,10)+-- (11.0,12.0)+-- >>> translatedPoint (-1) (-2) (0,0)+-- (-1.0,-2.0) translatedPoint :: Double -> Double -> Point -> Point translatedPoint tx ty (x, y) = (x + tx, y + ty) @@ -40,8 +51,17 @@ type Vector = (Double, Double) vectorLength :: Vector -> Double-vectorLength (x, y) = sqrt (x ^ 2 + y ^ 2)+vectorLength (x, y) = sqrt (x*x + y*y) +{-| Given vector, calculate angle in radians that it has with the X-axis.++>>> vectorDirection (1,0)+0.0+>>> vectorDirection (1,1)+0.7853981633974483+>>> vectorDirection (0,1)+1.5707963267948966+-} vectorDirection :: Vector -> Double vectorDirection (x, y) = atan2 y x @@ -54,7 +74,13 @@ scaledVector :: Double -> Vector -> Vector scaledVector k (x, y) = (k * x, k * y) -{-| Angle is in radians -}+{-| Rotate given vector by given angle in radians++>>> rotatedVector pi (1.0, 0.0)+(-1.0,1.2246467991473532e-16)+>>> rotatedVector (pi / 2) (1.0, 0.0)+(6.123233995736766e-17,1.0)+ -} rotatedVector :: Double -> Vector -> Vector rotatedVector angle (x, y) = (x * cos angle - y * sin angle, x * sin angle + y * cos angle)@@ -63,102 +89,60 @@ dotProduct (x1, y1) (x2, y2) = x1 * x2 + y1 * y2 data Picture- = SolidPolygon (Maybe SrcLoc)- [Point]- | SolidClosedCurve (Maybe SrcLoc)- [Point]- | Polygon (Maybe SrcLoc)- [Point]- | ThickPolygon (Maybe SrcLoc)- [Point]- !Double- | Rectangle (Maybe SrcLoc)- !Double- !Double- | SolidRectangle (Maybe SrcLoc)- !Double- !Double- | ThickRectangle (Maybe SrcLoc)- !Double- !Double- !Double- | ClosedCurve (Maybe SrcLoc)- [Point]- | ThickClosedCurve (Maybe SrcLoc)- [Point]- !Double- | Polyline (Maybe SrcLoc)- [Point]- | ThickPolyline (Maybe SrcLoc)- [Point]- !Double- | Curve (Maybe SrcLoc)- [Point]- | ThickCurve (Maybe SrcLoc)- [Point]- !Double- | Circle (Maybe SrcLoc)- !Double- | SolidCircle (Maybe SrcLoc)- !Double- | ThickCircle (Maybe SrcLoc)- !Double- !Double- | Sector (Maybe SrcLoc)- !Double- !Double- !Double- | Arc (Maybe SrcLoc)- !Double- !Double- !Double- | ThickArc (Maybe SrcLoc)- !Double- !Double- !Double- !Double- | StyledLettering (Maybe SrcLoc)- !TextStyle- !Font- !Text- | Lettering (Maybe SrcLoc)- !Text- | Color (Maybe SrcLoc)- !Color- !Picture- | Translate (Maybe SrcLoc)- !Double- !Double- !Picture- | Scale (Maybe SrcLoc)- !Double- !Double- !Picture- | Dilate (Maybe SrcLoc)- !Double- !Picture- | Rotate (Maybe SrcLoc)- !Double- !Picture+ = SolidPolygon (Maybe SrcLoc) [Point]+ | SolidClosedCurve (Maybe SrcLoc) [Point]+ | Polygon (Maybe SrcLoc) [Point]+ | ThickPolygon (Maybe SrcLoc) [Point] !Double+ | Rectangle (Maybe SrcLoc) !Double !Double+ | SolidRectangle (Maybe SrcLoc) !Double !Double+ | ThickRectangle (Maybe SrcLoc) !Double !Double !Double+ | ClosedCurve (Maybe SrcLoc) [Point]+ | ThickClosedCurve (Maybe SrcLoc) [Point] !Double+ | Polyline (Maybe SrcLoc) [Point]+ | ThickPolyline (Maybe SrcLoc) [Point] !Double+ | Curve (Maybe SrcLoc) [Point]+ | ThickCurve (Maybe SrcLoc) [Point] !Double+ | Circle (Maybe SrcLoc) !Double+ | SolidCircle (Maybe SrcLoc) !Double+ | ThickCircle (Maybe SrcLoc) !Double !Double+ | Sector (Maybe SrcLoc) !Double !Double !Double+ | Arc (Maybe SrcLoc) !Double !Double !Double+ | ThickArc (Maybe SrcLoc) !Double !Double !Double !Double+ | StyledLettering (Maybe SrcLoc) !TextStyle !Font !Text+ | Lettering (Maybe SrcLoc) !Text+ | Color (Maybe SrcLoc) !Color !Picture+ | Translate (Maybe SrcLoc) !Double !Double !Picture+ | Scale (Maybe SrcLoc) !Double !Double !Picture+ | Dilate (Maybe SrcLoc) !Double !Picture+ | Rotate (Maybe SrcLoc) !Double !Picture | CoordinatePlane (Maybe SrcLoc)- | Logo (Maybe SrcLoc)+ | Sketch (Maybe SrcLoc) !Text !Text !Double !Double | Pictures (Maybe SrcLoc) [Picture] | PictureAnd (Maybe SrcLoc) [Picture] | Blank (Maybe SrcLoc)+ deriving (Generic) +instance NFData Picture+ data TextStyle = Plain | Bold- | Italic deriving (Show)+ | Italic+ deriving (Generic, Show) +instance NFData TextStyle+ data Font = SansSerif | Serif | Monospace | Handwriting | Fancy- | NamedFont !Text deriving (Show)+ | NamedFont !Text+ deriving (Generic, Show) +instance NFData Font+ -- | A blank picture blank :: HasCallStack => Picture blank = Blank (getDebugSrcLoc callStack)@@ -172,7 +156,7 @@ path ps = Polyline (getDebugSrcLoc callStack) ps {-# WARNING path ["Please use polyline instead of path.",- "path may be removed July 2019."] #-}+ "path may be removed July 2020."] #-} -- | A thick sequence of line segments, with given line width and endpoints thickPolyline :: HasCallStack => Double -> [Point] -> Picture@@ -183,7 +167,7 @@ thickPath n ps = ThickPolyline (getDebugSrcLoc callStack) ps n {-# WARNING thickPath ["Please used thickPolyline instead of thickPath.",- "thickPath may be removed July 2019."] #-}+ "thickPath may be removed July 2020."] #-} -- | A thin polygon with these points as vertices polygon :: HasCallStack => [Point] -> Picture@@ -235,7 +219,7 @@ -- | A thin circle, with this radius circle :: HasCallStack => Double -> Picture-circle = Circle (getDebugSrcLoc callStack) +circle = Circle (getDebugSrcLoc callStack) -- | A thick circle, with this line width and radius thickCircle :: HasCallStack => Double -> Double -> Picture@@ -256,7 +240,7 @@ -- | A solid circle, with this radius solidCircle :: HasCallStack => Double -> Picture-solidCircle = SolidCircle (getDebugSrcLoc callStack) +solidCircle = SolidCircle (getDebugSrcLoc callStack) -- | A solid sector of a circle (i.e., a pie slice) starting and ending at these -- angles, with this radius@@ -270,7 +254,7 @@ text = Lettering (getDebugSrcLoc callStack) {-# WARNING text ["Please used lettering instead of text.",- "text may be removed July 2019."] #-}+ "text may be removed July 2020."] #-} -- | A rendering of text characters. lettering :: HasCallStack => Text -> Picture@@ -281,7 +265,7 @@ styledText = StyledLettering (getDebugSrcLoc callStack) {-# WARNING styledText ["Please used styledLettering instead of styledText.",- "styledText may be removed July 2019."] #-}+ "styledText may be removed July 2020."] #-} -- | A rendering of text characters onto a Picture, with a specific -- choice of font and style.@@ -300,11 +284,11 @@ translated :: HasCallStack => Double -> Double -> Picture -> Picture translated = Translate (getDebugSrcLoc callStack) --- | A picture scaled by these factors.+-- | A picture scaled by these factors in the x and y directions. scaled :: HasCallStack => Double -> Double -> Picture -> Picture scaled = Scale (getDebugSrcLoc callStack) --- | A picture scaled by these factors.+-- | A picture scaled uniformly in all directions by this scale factor. dilated :: HasCallStack => Double -> Picture -> Picture dilated = Dilate (getDebugSrcLoc callStack) @@ -322,7 +306,7 @@ (&) :: HasCallStack => Picture -> Picture -> Picture infixr 0 & -a & b@(PictureAnd loc2 bs)+a & PictureAnd loc2 bs | srcContains loc1 loc2 = PictureAnd loc1 (a:bs) where loc1 = getDebugSrcLoc callStack a & b = PictureAnd (getDebugSrcLoc callStack) [a, b]@@ -343,15 +327,21 @@ -- more accurately. -- -- Example:------ main = drawingOf (myPicture <> coordinatePlane)--- myPicture = ...+-- @+-- main = drawingOf (myPicture <> coordinatePlane)+-- myPicture = ...+-- @ coordinatePlane :: HasCallStack => Picture coordinatePlane = CoordinatePlane (getDebugSrcLoc callStack) -- | The CodeWorld logo. codeWorldLogo :: HasCallStack => Picture-codeWorldLogo = Logo (getDebugSrcLoc callStack)+codeWorldLogo =+ Sketch+ (getDebugSrcLoc callStack)+ "codeWorldLogo"+ $(embedAsUrl "image/svg+xml" "data/codeworld.svg")+ 17.68 7.28 getDebugSrcLoc :: CallStack -> Maybe SrcLoc getDebugSrcLoc cs = Data.List.find ((== "main") . srcLocPackage) locs
+ src/CodeWorld/Reflex.hs view
@@ -0,0 +1,620 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE RecursiveDo #-}++{-+ Copyright 2019 The CodeWorld Authors. All rights reserved.++ Licensed under the Apache License, Version 2.0 (the "License");+ you may not use this file except in compliance with the License.+ You may obtain a copy of the License at++ http://www.apache.org/licenses/LICENSE-2.0++ Unless required by applicable law or agreed to in writing, software+ distributed under the License is distributed on an "AS IS" BASIS,+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+ See the License for the specific language governing permissions and+ limitations under the License.+-}++-- | Module for using CodeWorld pictures in Reflex-based FRP applications.+module CodeWorld.Reflex+ ( -- $intro+ -- $old+ reflexOf,+ ReactiveInput,+ keyPress,+ keyRelease,+ textEntry,+ pointerPress,+ pointerRelease,+ pointerPosition,+ pointerDown,+ timePassing,++ -- * New Entry Point+ -- $new+ reactiveOf,+ debugReactiveOf,+ ReflexCodeWorld,+ getKeyPress,+ getKeyRelease,+ getTextEntry,+ getPointerClick,+ getPointerPosition,+ isPointerDown,+ getTimePassing,+ draw,++ -- * Pictures+ Picture,+ blank,+ polyline,+ thickPolyline,+ polygon,+ thickPolygon,+ solidPolygon,+ curve,+ thickCurve,+ closedCurve,+ thickClosedCurve,+ solidClosedCurve,+ rectangle,+ solidRectangle,+ thickRectangle,+ circle,+ solidCircle,+ thickCircle,+ arc,+ sector,+ thickArc,+ lettering,+ TextStyle (..),+ Font (..),+ styledLettering,+ colored,+ coloured,+ translated,+ scaled,+ dilated,+ rotated,+ pictures,+ (<>),+ (&),+ coordinatePlane,+ codeWorldLogo,+ Point,+ translatedPoint,+ rotatedPoint,+ scaledPoint,+ dilatedPoint,+ Vector,+ vectorLength,+ vectorDirection,+ vectorSum,+ vectorDifference,+ scaledVector,+ rotatedVector,+ dotProduct,++ -- * Colors+ Color (..),+ Colour,+ pattern RGB,+ pattern HSL,+ black,+ white,+ red,+ green,+ blue,+ yellow,+ orange,+ brown,+ pink,+ purple,+ gray,+ grey,+ mixed,+ lighter,+ light,+ darker,+ dark,+ brighter,+ bright,+ duller,+ dull,+ translucent,+ assortedColors,+ hue,+ saturation,+ luminosity,+ alpha,+ )+where++import CodeWorld.Color+import CodeWorld.Driver+import CodeWorld.Picture+import Control.Monad.Fix+import Control.Monad.Trans+import Data.Bool+import qualified Data.Text as T+import Numeric (showFFloatAlt)+import Reflex++-- $intro+-- = Using Reflex with CodeWorld+--+-- This is an alternative to the standard CodeWorld API, which is based on+-- the Reflex library. You should import this __instead__ of 'CodeWorld', since+-- the 'CodeWorld' module exports conflict with Reflex names.+--+-- You'll provide a function whose input can be used to access the user's+-- actions with keys, the mouse pointer, and time, and whose output is a+-- 'Picture'. The 'Picture' value is built with the same combinators as the+-- main 'CodeWorld' library.+--+-- The Reflex API is documented in many places, but a great reference is+-- available in the <https://github.com/reflex-frp/reflex/blob/develop/Quickref.md Reflex Quick Reference>.++-- $old+--+-- The old API consists of the function `reflexOf`. WARNING: This API will soon+-- be deleted in favor of the newer API described below.+--+-- A simple example:+--+-- @+-- import CodeWorld.Reflex+-- import Reflex+--+-- main :: IO ()+-- main = reflexOf $ \\input -> do+-- angle <- foldDyn (+) 0 (gate (current (pointerDown input)) (timePassing input))+-- return $ (uncurry translated \<$> pointerPosition input \<*>)+-- $ (colored \<$> bool red green \<$> pointerDown input \<*>)+-- $ (rotated \<$> angle \<*>)+-- $ constDyn (solidRectangle 2 2)+-- @++-- | The entry point for running Reflex-based CodeWorld programs.+reflexOf ::+ ( forall t m.+ ( Reflex t,+ MonadHold t m,+ MonadFix m,+ PerformEvent t m,+ MonadIO (Performable m),+ Adjustable t m,+ PostBuild t m+ ) =>+ ReactiveInput t ->+ m (Dynamic t Picture)+ ) ->+ IO ()+reflexOf program = runReactive $ \input -> do+ pic <- program input+ return (pic, pic)+{-# WARNING+ reflexOf+ [ "Please use reactiveOf instead of reflexOf.",+ "reflexOf will be removed and replaced soon."+ ]+ #-}++reactiveOf :: (forall t m. ReflexCodeWorld t m => m ()) -> IO ()+reactiveOf program = runReactive $ \input -> runReactiveProgram program input+{-# WARNING+ reactiveOf+ [ "After the current migration is complete,",+ "reactiveOf will probably be renamed to reflexOf."+ ]+ #-}++debugReactiveOf :: (forall t m. ReflexCodeWorld t m => m ()) -> IO ()+debugReactiveOf program = runReactive $ \input -> flip runReactiveProgram input $ do+ hoverAlpha <- getHoverAlpha+ controlState <- reactiveDebugControls hoverAlpha+ logicalInputs <- makeLogicalInputs controlState =<< getReactiveInput+ withReactiveInput logicalInputs program++data ControlState t+ = ControlState+ { csRunning :: Dynamic t Bool,+ csTimeDilation :: Dynamic t Double,+ csPointTransform :: Dynamic t (Point -> Point),+ csSyntheticStep :: Event t ()+ }++makeLogicalInputs :: (Reflex t, MonadHold t m) => ControlState t -> ReactiveInput t -> m (ReactiveInput t)+makeLogicalInputs ControlState {..} input = do+ keyPress <- return $ gateDyn csRunning $ keyPress input+ keyRelease <- return $ gateDyn csRunning $ keyRelease input+ textEntry <- return $ gateDyn csRunning $ textEntry input+ pointerPress <- return $ gateDyn csRunning $ attachWith ($) (current csPointTransform) (pointerPress input)+ pointerRelease <- return $ gateDyn csRunning $ attachWith ($) (current csPointTransform) (pointerRelease input)+ pointerPosition <- freezeDyn csRunning $ csPointTransform <*> pointerPosition input+ pointerDown <- freezeDyn csRunning $ pointerDown input+ timePassing <-+ return $+ mergeWith+ (+)+ [ gateDyn csRunning $ attachWith (*) (current csTimeDilation) (timePassing input),+ 0.1 <$ csSyntheticStep+ ]+ return ReactiveInput {..}++freezeDyn :: (Reflex t, MonadHold t m) => Dynamic t Bool -> Dynamic t a -> m (Dynamic t a)+freezeDyn predicate dyn = do+ initial <- sample (current dyn)+ holdDyn initial (gateDyn predicate (updated dyn))++reactiveDebugControls ::+ ( PerformEvent t m,+ Adjustable t m,+ MonadIO (Performable m),+ PostBuild t m,+ MonadHold t m,+ MonadFix m+ ) =>+ Dynamic t Double ->+ ReactiveProgram t m (ControlState t)+reactiveDebugControls hoverAlpha = do+ fastForwardClick <- fastForwardButton hoverAlpha (-4, -9)+ rec speedDragged <- speedSlider hoverAlpha (-6, -9) speedFactor+ playPauseClick <- playPauseButton hoverAlpha running (-8, -9)+ speedFactor <-+ foldDyn ($) 1 $+ mergeWith+ (.)+ [ (\s -> if s == 0 then 1 else 0) <$ playPauseClick,+ (\s -> max 2.0 (s + 1)) <$ fastForwardClick,+ const <$> speedDragged+ ]+ let running = (> 0) <$> speedFactor+ rec resetViewClick <- resetViewButton hoverAlpha (9, -3) needsReset+ zoomFactor <- zoomControls hoverAlpha (9, -6) resetViewClick+ panOffset <- panControls running resetViewClick+ let needsReset =+ (||) <$> ((/= 1) <$> zoomFactor)+ <*> ((/= (0, 0)) <$> panOffset)+ stepClick <- stepButton hoverAlpha (-2, -9) running+ transformUserPicture $ uncurry translated <$> panOffset+ transformUserPicture $ dilated <$> zoomFactor+ return $ ControlState+ { csRunning = running,+ csTimeDilation = speedFactor,+ csPointTransform = transformPoint <$> zoomFactor <*> panOffset,+ csSyntheticStep = stepClick+ }+ where+ transformPoint z (dx, dy) (x, y) = ((x - dx) / z, (y - dy) / z)++{-# WARNING+ debugReactiveOf+ [ "After the current migration is complete,",+ "debugReactiveOf will probably be renamed to debugReflexOf."+ ]+ #-}++getHoverAlpha :: ReflexCodeWorld t m => m (Dynamic t Double)+getHoverAlpha = do+ time <- getTimePassing+ move <- updated <$> getPointerPosition+ rec timeSinceMove <-+ foldDyn ($) 999 $+ mergeWith+ (.)+ [ (+) <$> gateDyn ((< 5) <$> timeSinceMove) time,+ const 0 <$ move+ ]+ return (alphaFromTime <$> timeSinceMove)+ where+ alphaFromTime t+ | t < 4.5 = 1+ | t > 5.0 = 0+ | otherwise = 10 - 2 * t++playPauseButton ::+ ( PerformEvent t m,+ Adjustable t m,+ MonadIO (Performable m),+ PostBuild t m,+ MonadHold t m,+ MonadFix m+ ) =>+ Dynamic t Double ->+ Dynamic t Bool ->+ Point ->+ ReactiveProgram t m (Event t ())+playPauseButton hoverAlpha running pos = do+ systemDraw $+ uncurry translated pos+ <$> (bool (playButton <$> hoverAlpha) (pauseButton <$> hoverAlpha) =<< running)+ click <- ffilter (onRect 0.8 0.8 pos) <$> getPointerClick+ return $ () <$ click+ where+ playButton a =+ colored+ (RGBA 0 0 0 a)+ (solidPolygon [(-0.2, 0.25), (-0.2, -0.25), (0.2, 0)])+ <> colored (RGBA 0.2 0.2 0.2 a) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 a) (solidRectangle 0.8 0.8)+ pauseButton a =+ colored+ (RGBA 0 0 0 a)+ ( translated (-0.15) 0 (solidRectangle 0.2 0.6)+ <> translated 0.15 0 (solidRectangle 0.2 0.6)+ )+ <> colored (RGBA 0.2 0.2 0.2 a) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 a) (solidRectangle 0.8 0.8)++stepButton ::+ ( PerformEvent t m,+ Adjustable t m,+ MonadIO (Performable m),+ PostBuild t m,+ MonadHold t m,+ MonadFix m+ ) =>+ Dynamic t Double ->+ Point ->+ Dynamic t Bool ->+ ReactiveProgram t m (Event t ())+stepButton hoverAlpha pos running = do+ systemDraw $+ uncurry translated pos+ <$> (bool (button <$> hoverAlpha) (constDyn blank) =<< running)+ click <- gateDyn (not <$> running) <$> ffilter (onRect 0.8 0.8 pos) <$> getPointerClick+ return $ () <$ click+ where+ button a =+ colored+ (RGBA 0 0 0 a)+ ( translated (-0.15) 0 (solidRectangle 0.2 0.5)+ <> solidPolygon [(0.05, 0.25), (0.05, -0.25), (0.3, 0)]+ )+ <> colored (RGBA 0.2 0.2 0.2 a) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 a) (solidRectangle 0.8 0.8)++fastForwardButton ::+ ( PerformEvent t m,+ Adjustable t m,+ MonadIO (Performable m),+ PostBuild t m,+ MonadHold t m,+ MonadFix m+ ) =>+ Dynamic t Double ->+ Point ->+ ReactiveProgram t m (Event t ())+fastForwardButton hoverAlpha pos = do+ systemDraw $ uncurry translated pos <$> button <$> hoverAlpha+ click <- ffilter (onRect 0.8 0.8 pos) <$> getPointerClick+ return $ () <$ click+ where+ button a =+ colored+ (RGBA 0 0 0 a)+ ( solidPolygon [(-0.3, 0.25), (-0.3, -0.25), (-0.05, 0)]+ <> solidPolygon [(0.05, 0.25), (0.05, -0.25), (0.3, 0)]+ )+ <> colored (RGBA 0.2 0.2 0.2 a) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 a) (solidRectangle 0.8 0.8)++speedSlider ::+ ( PerformEvent t m,+ Adjustable t m,+ MonadIO (Performable m),+ PostBuild t m,+ MonadHold t m,+ MonadFix m+ ) =>+ Dynamic t Double ->+ Point ->+ Dynamic t Double ->+ ReactiveProgram t m (Event t Double)+speedSlider hoverAlpha pos speedFactor = do+ systemDraw $ uncurry translated pos <$> (slider <$> hoverAlpha <*> speedFactor)+ click <- ffilter (onRect 3.0 0.8 pos) <$> getPointerClick+ release <- ffilter not <$> updated <$> isPointerDown+ dragging <- holdDyn False $ mergeWith (&&) [True <$ click, False <$ release]+ pointer <- getPointerPosition+ return $ speedFromPoint <$> mergeWith const [gateDyn dragging (updated pointer), click]+ where+ speedFromPoint (x, _y) = scaleRange (-1.4, 1.4) (0, 5) (x - fst pos)+ xFromSpeed speed = scaleRange (0, 5) (-1.4, 1.4) speed+ slider a speed =+ let xoff = xFromSpeed speed+ in colored+ (RGBA 0 0 0 a)+ ( translated xoff 0.75 $ scaled 0.5 0.5 $+ lettering (T.pack (showFFloatAlt (Just 2) speed "x"))+ )+ <> colored (RGBA 0 0 0 a) (translated xoff 0 (solidRectangle 0.2 0.8))+ <> colored (RGBA 0.2 0.2 0.2 a) (rectangle 2.8 0.25)+ <> colored (RGBA 0.8 0.8 0.8 a) (solidRectangle 2.8 0.25)++resetViewButton ::+ ( PerformEvent t m,+ Adjustable t m,+ MonadIO (Performable m),+ PostBuild t m,+ MonadHold t m,+ MonadFix m+ ) =>+ Dynamic t Double ->+ Point ->+ Dynamic t Bool ->+ ReactiveProgram t m (Event t ())+resetViewButton hoverAlpha pos needsReset = do+ click <- gateDyn needsReset . ffilter (onRect 0.8 0.8 pos) <$> getPointerClick+ systemDraw $ uncurry translated pos <$> (bool (constDyn blank) (button <$> hoverAlpha) =<< needsReset)+ return $ () <$ click+ where+ button a =+ colored (RGBA 0.8 0.8 0.8 a) (solidRectangle 0.7 0.2)+ <> colored (RGBA 0.8 0.8 0.8 a) (solidRectangle 0.2 0.7)+ <> colored (RGBA 0.0 0.0 0.0 a) (thickRectangle 0.1 0.5 0.5)+ <> colored (RGBA 0.2 0.2 0.2 a) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 a) (solidRectangle 0.8 0.8)++panControls ::+ ( PerformEvent t m,+ Adjustable t m,+ MonadIO (Performable m),+ PostBuild t m,+ MonadHold t m,+ MonadFix m+ ) =>+ Dynamic t Bool ->+ Event t () ->+ ReactiveProgram t m (Dynamic t (Double, Double))+panControls running resetClick = do+ click <- gateDyn (not <$> running) <$> getPointerClick+ release <- ffilter not <$> updated <$> isPointerDown+ dragging <- holdDyn False $ mergeWith (&&) [True <$ click, False <$ release]+ pos <- getPointerPosition+ let dragPos = bool (const Nothing) Just <$> dragging <*> pos+ diffPairs <- foldDyn (\x (y, _) -> (x, y)) (Nothing, Nothing) (updated dragPos)+ let drags = fmapMaybe toMovement (updated diffPairs)+ foldDyn ($) (0, 0) $+ mergeWith+ (.)+ [ vectorSum <$> drags,+ const (0, 0) <$ resetClick+ ]+ where+ toMovement (Just (x1, y1), Just (x2, y2)) = Just (x1 - x2, y1 - y2)+ toMovement _ = Nothing++zoomControls ::+ ( PerformEvent t m,+ Adjustable t m,+ MonadIO (Performable m),+ PostBuild t m,+ MonadHold t m,+ MonadFix m+ ) =>+ Dynamic t Double ->+ Point ->+ Event t () ->+ ReactiveProgram t m (Dynamic t Double)+zoomControls hoverAlpha (x, y) resetClick = do+ zoomInClick <- zoomInButton hoverAlpha (x, y + 2)+ zoomOutClick <- zoomOutButton hoverAlpha (x, y - 2)+ rec zoomDrag <- zoomSlider hoverAlpha (x, y) zoomFactor+ zoomFactor <-+ foldDyn ($) 1 $+ mergeWith+ (.)+ [ (* zoomIncrement) <$ zoomInClick,+ (/ zoomIncrement) <$ zoomOutClick,+ const <$> zoomDrag,+ const 1 <$ resetClick+ ]+ return zoomFactor++zoomInButton ::+ ( PerformEvent t m,+ Adjustable t m,+ MonadIO (Performable m),+ PostBuild t m,+ MonadHold t m,+ MonadFix m+ ) =>+ Dynamic t Double ->+ Point ->+ ReactiveProgram t m (Event t ())+zoomInButton hoverAlpha pos = do+ systemDraw $ uncurry translated pos <$> button <$> hoverAlpha+ (() <$) <$> ffilter (onRect 0.8 0.8 pos) <$> getPointerClick+ where+ button a =+ colored+ (RGBA 0 0 0 a)+ ( translated+ (-0.05)+ (0.05)+ ( thickCircle 0.1 0.22+ <> solidRectangle 0.06 0.25+ <> solidRectangle 0.25 0.06+ <> rotated (- pi / 4) (translated 0.35 0 (solidRectangle 0.2 0.1))+ )+ )+ <> colored (RGBA 0.2 0.2 0.2 a) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 a) (solidRectangle 0.8 0.8)++zoomOutButton ::+ ( PerformEvent t m,+ Adjustable t m,+ MonadIO (Performable m),+ PostBuild t m,+ MonadHold t m,+ MonadFix m+ ) =>+ Dynamic t Double ->+ Point ->+ ReactiveProgram t m (Event t ())+zoomOutButton hoverAlpha pos = do+ systemDraw $ uncurry translated pos <$> button <$> hoverAlpha+ (() <$) <$> ffilter (onRect 0.8 0.8 pos) <$> getPointerClick+ where+ button a =+ colored+ (RGBA 0 0 0 a)+ ( translated+ (-0.05)+ (0.05)+ ( thickCircle 0.1 0.22+ <> solidRectangle 0.25 0.06+ <> rotated (- pi / 4) (translated 0.35 0 (solidRectangle 0.2 0.1))+ )+ )+ <> colored (RGBA 0.2 0.2 0.2 a) (rectangle 0.8 0.8)+ <> colored (RGBA 0.8 0.8 0.8 a) (solidRectangle 0.8 0.8)++zoomSlider ::+ ( PerformEvent t m,+ Adjustable t m,+ MonadIO (Performable m),+ PostBuild t m,+ MonadHold t m,+ MonadFix m+ ) =>+ Dynamic t Double ->+ Point ->+ Dynamic t Double ->+ ReactiveProgram t m (Event t Double)+zoomSlider hoverAlpha pos factor = do+ systemDraw $ uncurry translated pos <$> (slider <$> hoverAlpha <*> factor)+ click <- ffilter (onRect 0.8 3.0 pos) <$> getPointerClick+ release <- ffilter not <$> updated <$> isPointerDown+ dragging <- holdDyn False $ mergeWith (&&) [True <$ click, False <$ release]+ pointer <- getPointerPosition+ return $ zoomFromPoint <$> mergeWith const [gateDyn dragging (updated pointer), click]+ where+ zoomFromPoint (_x, y) = zoomIncrement ** (scaleRange (-1.4, 1.4) (-10, 10) (y - snd pos))+ yFromZoom z = scaleRange (-10, 10) (-1.4, 1.4) (logBase zoomIncrement z)+ slider a z =+ let yoff = yFromZoom z+ in colored+ (RGBA 0 0 0 a)+ ( translated (-1.1) yoff $ scaled 0.5 0.5 $+ lettering (T.pack (show (round (z * 100) :: Int) ++ "%"))+ )+ <> colored (RGBA 0 0 0 a) (translated 0 yoff (solidRectangle 0.8 0.2))+ <> colored (RGBA 0.2 0.2 0.2 a) (rectangle 0.25 2.8)+ <> colored (RGBA 0.8 0.8 0.8 a) (solidRectangle 0.25 2.8)++zoomIncrement :: Double+zoomIncrement = 8 ** (1 / 10)++onRect :: Double -> Double -> Point -> Point -> Bool+onRect w h (x1, y1) (x2, y2) = abs (x1 - x2) < w / 2 && abs (y1 - y2) < h / 2++scaleRange :: (Double, Double) -> (Double, Double) -> Double -> Double+scaleRange (a1, b1) (a2, b2) x = min b2 $ max a2 $ (x - a1) / (b1 - a1) * (b2 - a2) + a2
+ src/CodeWorld/Sketches.hs view
@@ -0,0 +1,546 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}++{-+ Copyright 2019 The CodeWorld Authors. All rights reserved.++ Licensed under the Apache License, Version 2.0 (the "License");+ you may not use this file except in compliance with the License.+ You may obtain a copy of the License at++ http://www.apache.org/licenses/LICENSE-2.0++ Unless required by applicable law or agreed to in writing, software+ distributed under the License is distributed on an "AS IS" BASIS,+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+ See the License for the specific language governing permissions and+ limitations under the License.+-}++module CodeWorld.Sketches where++import CodeWorld.Picture+import GHC.Stack+import Util.EmbedAsUrl++sketchedAirplane :: HasCallStack => Picture+sketchedAirplane =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedAirplane"+ $(embedAsUrl "image/svg+xml" "data/AirplaneTransparency70.svg")+ 10+ 10++sketchedClock :: HasCallStack => Picture+sketchedClock =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedClock"+ $(embedAsUrl "image/svg+xml" "data/AlarmTransparency70.svg")+ 10+ 10++sketchedAlien :: HasCallStack => Picture+sketchedAlien =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedAlien"+ $(embedAsUrl "image/svg+xml" "data/AlienTransparency70.svg")+ 10+ 10++sketchedApple :: HasCallStack => Picture+sketchedApple =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedApple"+ $(embedAsUrl "image/svg+xml" "data/AppleTransparency70.svg")+ 10+ 10++sketchedAstronaut :: HasCallStack => Picture+sketchedAstronaut =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedAstronaut"+ $(embedAsUrl "image/svg+xml" "data/AustronautTransparency70.svg")+ 10+ 10++sketchedBaby :: HasCallStack => Picture+sketchedBaby =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedBaby"+ $(embedAsUrl "image/svg+xml" "data/BabyTransparency70.svg")+ 10+ 10++sketchedBalloon :: HasCallStack => Picture+sketchedBalloon =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedBalloon"+ $(embedAsUrl "image/svg+xml" "data/BalloonTransparency70.svg")+ 10+ 10++sketchedBall :: HasCallStack => Picture+sketchedBall =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedBall"+ $(embedAsUrl "image/svg+xml" "data/BallTransparency70.svg")+ 10+ 10++sketchedBell :: HasCallStack => Picture+sketchedBell =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedBell"+ $(embedAsUrl "image/svg+xml" "data/BellTransparency70.svg")+ 10+ 10++sketchedBird :: HasCallStack => Picture+sketchedBird =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedBird"+ $(embedAsUrl "image/svg+xml" "data/BirdTransparency70.svg")+ 10+ 10++sketchedBoat :: HasCallStack => Picture+sketchedBoat =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedBoat"+ $(embedAsUrl "image/svg+xml" "data/BoatTransparency70.svg")+ 10+ 10++sketchedBook :: HasCallStack => Picture+sketchedBook =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedBook"+ $(embedAsUrl "image/svg+xml" "data/BookTransparency70.svg")+ 10+ 10++sketchedBoy :: HasCallStack => Picture+sketchedBoy =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedBoy"+ $(embedAsUrl "image/svg+xml" "data/BoyTransparency70.svg")+ 10+ 10++sketchedBubble :: HasCallStack => Picture+sketchedBubble =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedBubble"+ $(embedAsUrl "image/svg+xml" "data/BubbleTransparency70.svg")+ 10+ 10++sketchedBug :: HasCallStack => Picture+sketchedBug =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedBug"+ $(embedAsUrl "image/svg+xml" "data/BugTransparency70.svg")+ 10+ 10++sketchedCar :: HasCallStack => Picture+sketchedCar =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedCar"+ $(embedAsUrl "image/svg+xml" "data/CarTransparency70.svg")+ 10+ 10++sketchedChatBubble :: HasCallStack => Picture+sketchedChatBubble =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedChatBubble"+ $(embedAsUrl "image/svg+xml" "data/ChatBubbleTransparency70.svg")+ 10+ 10++sketchedChest :: HasCallStack => Picture+sketchedChest =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedChest"+ $(embedAsUrl "image/svg+xml" "data/ChestTransparency70.svg")+ 10+ 10++sketchedCloud :: HasCallStack => Picture+sketchedCloud =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedCloud"+ $(embedAsUrl "image/svg+xml" "data/CloudTransparency70.svg")+ 10+ 10++sketchedCoin :: HasCallStack => Picture+sketchedCoin =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedCoin"+ $(embedAsUrl "image/svg+xml" "data/CoinTransparency70.svg")+ 10+ 10++sketchedDog :: HasCallStack => Picture+sketchedDog =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedDog"+ $(embedAsUrl "image/svg+xml" "data/DogTransparency70.svg")+ 10+ 10++sketchedDragon :: HasCallStack => Picture+sketchedDragon =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedDragon"+ $(embedAsUrl "image/svg+xml" "data/DragonTransparency70.svg")+ 10+ 10++sketchedExplosion :: HasCallStack => Picture+sketchedExplosion =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedExplosion"+ $(embedAsUrl "image/svg+xml" "data/ExplosionTransparency70.svg")+ 10+ 10++sketchedFish :: HasCallStack => Picture+sketchedFish =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedFish"+ $(embedAsUrl "image/svg+xml" "data/FishTransparency70.svg")+ 10+ 10++sketchedFlag :: HasCallStack => Picture+sketchedFlag =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedFlag"+ $(embedAsUrl "image/svg+xml" "data/FlagTransparency70.svg")+ 10+ 10++sketchedFlame :: HasCallStack => Picture+sketchedFlame =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedFlame"+ $(embedAsUrl "image/svg+xml" "data/FlameTransparency70.svg")+ 10+ 10++sketchedFlower :: HasCallStack => Picture+sketchedFlower =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedFlower"+ $(embedAsUrl "image/svg+xml" "data/FlowerTransparency70.svg")+ 10+ 10++sketchedGear :: HasCallStack => Picture+sketchedGear =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedGear"+ $(embedAsUrl "image/svg+xml" "data/GearTransparency70.svg")+ 10+ 10++sketchedGhost :: HasCallStack => Picture+sketchedGhost =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedGhost"+ $(embedAsUrl "image/svg+xml" "data/GhostTransparency70.svg")+ 10+ 10++sketchedGirl :: HasCallStack => Picture+sketchedGirl =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedGirl"+ $(embedAsUrl "image/svg+xml" "data/GirlTransparency70.svg")+ 10+ 10++sketchedGrass :: HasCallStack => Picture+sketchedGrass =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedGrass"+ $(embedAsUrl "image/svg+xml" "data/GrassTransparency70.svg")+ 10+ 10++sketchedHeart :: HasCallStack => Picture+sketchedHeart =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedHeart"+ $(embedAsUrl "image/svg+xml" "data/HeartTransparency70.svg")+ 10+ 10++sketchedHotAirBalloon :: HasCallStack => Picture+sketchedHotAirBalloon =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedHotAirBalloon"+ $(embedAsUrl "image/svg+xml" "data/HotAirBalloonTransparency70.svg")+ 10+ 10++sketchedHouse :: HasCallStack => Picture+sketchedHouse =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedHouse"+ $(embedAsUrl "image/svg+xml" "data/HouseTransparency70.svg")+ 10+ 10++sketchedJewel :: HasCallStack => Picture+sketchedJewel =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedJewel"+ $(embedAsUrl "image/svg+xml" "data/JewelTransparency70.svg")+ 10+ 10++sketchedKey :: HasCallStack => Picture+sketchedKey =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedKey"+ $(embedAsUrl "image/svg+xml" "data/KeyTransparency70.svg")+ 10+ 10++sketchedCat :: HasCallStack => Picture+sketchedCat =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedCat"+ $(embedAsUrl "image/svg+xml" "data/KittenTransparency70.svg")+ 10+ 10++sketchedLightBulb :: HasCallStack => Picture+sketchedLightBulb =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedLightBulb"+ $(embedAsUrl "image/svg+xml" "data/LightbulbTransparency70.svg")+ 10+ 10++sketchedLightning :: HasCallStack => Picture+sketchedLightning =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedLightning"+ $(embedAsUrl "image/svg+xml" "data/LightningTransparency70.svg")+ 10+ 10++sketchedMonster :: HasCallStack => Picture+sketchedMonster =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedMonster"+ $(embedAsUrl "image/svg+xml" "data/MonsterTransparency70.svg")+ 10+ 10++sketchedMoon :: HasCallStack => Picture+sketchedMoon =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedMoon"+ $(embedAsUrl "image/svg+xml" "data/MoonTransparency70.svg")+ 10+ 10++sketchedNote :: HasCallStack => Picture+sketchedNote =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedNote"+ $(embedAsUrl "image/svg+xml" "data/NoteTransparency70.svg")+ 10+ 10++sketchedPawnBlack :: HasCallStack => Picture+sketchedPawnBlack =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedPawnBlack"+ $(embedAsUrl "image/svg+xml" "data/PawnBlackTransparency70.svg")+ 10+ 10++sketchedPawnBlue :: HasCallStack => Picture+sketchedPawnBlue =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedPawnBlue"+ $(embedAsUrl "image/svg+xml" "data/PawnBlueTransparency70.svg")+ 10+ 10++sketchedPawnGreen :: HasCallStack => Picture+sketchedPawnGreen =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedPawnGreen"+ $(embedAsUrl "image/svg+xml" "data/PawnGreenTransparency70.svg")+ 10+ 10++sketchedPawnRed :: HasCallStack => Picture+sketchedPawnRed =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedPawnRed"+ $(embedAsUrl "image/svg+xml" "data/PawnRedTransparency70.svg")+ 10+ 10++sketchedPawnWhite :: HasCallStack => Picture+sketchedPawnWhite =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedPawnWhite"+ $(embedAsUrl "image/svg+xml" "data/PawnWhiteTransparency70.svg")+ 10+ 10++sketchedRaindrop :: HasCallStack => Picture+sketchedRaindrop =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedRaindrop"+ $(embedAsUrl "image/svg+xml" "data/RaindropTransparency70.svg")+ 10+ 10++sketchedRobot :: HasCallStack => Picture+sketchedRobot =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedRobot"+ $(embedAsUrl "image/svg+xml" "data/RobotTransparency70.svg")+ 10+ 10++sketchedRocket :: HasCallStack => Picture+sketchedRocket =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedRocket"+ $(embedAsUrl "image/svg+xml" "data/RocketShipTransparency70.svg")+ 10+ 10++sketchedScroll :: HasCallStack => Picture+sketchedScroll =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedScroll"+ $(embedAsUrl "image/svg+xml" "data/ScrollTransparency70.svg")+ 10+ 10++sketchedSign :: HasCallStack => Picture+sketchedSign =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedSign"+ $(embedAsUrl "image/svg+xml" "data/SignTransparency70.svg")+ 10+ 10++sketchedSparkle :: HasCallStack => Picture+sketchedSparkle =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedSparkle"+ $(embedAsUrl "image/svg+xml" "data/SparklesTransparency70.svg")+ 10+ 10++sketchedStar :: HasCallStack => Picture+sketchedStar =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedStar"+ $(embedAsUrl "image/svg+xml" "data/StarTransparency70.svg")+ 10+ 10++sketchedSun :: HasCallStack => Picture+sketchedSun =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedSun"+ $(embedAsUrl "image/svg+xml" "data/SunTransparency70.svg")+ 10+ 10++sketchedThoughtBubble :: HasCallStack => Picture+sketchedThoughtBubble =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedThoughtBubble"+ $(embedAsUrl "image/svg+xml" "data/ThoughtBubbleTransparency70.svg")+ 10+ 10++sketchedBlock :: HasCallStack => Picture+sketchedBlock =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedBlock"+ $(embedAsUrl "image/svg+xml" "data/ToyCubeTransparency70.svg")+ 10+ 10++sketchedTree :: HasCallStack => Picture+sketchedTree =+ Sketch+ (getDebugSrcLoc callStack)+ "sketchedTree"+ $(embedAsUrl "image/svg+xml" "data/TreeTransparency70.svg")+ 10+ 10
+ src/Util/EmbedAsUrl.hs view
@@ -0,0 +1,43 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TemplateHaskell #-}++{-+ Copyright 2019 The CodeWorld Authors. All rights reserved.++ Licensed under the Apache License, Version 2.0 (the "License");+ you may not use this file except in compliance with the License.+ You may obtain a copy of the License at++ http://www.apache.org/licenses/LICENSE-2.0++ Unless required by applicable law or agreed to in writing, software+ distributed under the License is distributed on an "AS IS" BASIS,+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+ See the License for the specific language governing permissions and+ limitations under the License.+-}++module Util.EmbedAsUrl+ ( embedAsUrl,+ )+where++import qualified Data.ByteString as B+import qualified Data.ByteString.Base64 as B64+import qualified Data.ByteString.Char8 as BC+import qualified Data.ByteString.Unsafe as B+import qualified Data.Text.Encoding as T+import Language.Haskell.TH.Syntax+import System.IO.Unsafe++embedAsUrl :: String -> FilePath -> Q Exp+embedAsUrl contentType f = do+ qAddDependentFile f+ payload <- runIO $ B64.encode <$> B.readFile f+ let uri = "data:" <> BC.pack contentType <> ";base64," <> payload+ [e|+ T.decodeUtf8 $ unsafePerformIO $+ B.unsafePackAddressLen+ $(return $ LitE $ IntegerL $ fromIntegral $ B.length uri)+ $(return $ LitE $ StringPrimL $ B.unpack uri)+ |]
+ test/Main.hs view
@@ -0,0 +1,46 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE StaticPointers #-}+{-# LANGUAGE MagicHash #-}+{-# LANGUAGE BangPatterns #-}++{-+ Copyright 2019 The CodeWorld Authors. All rights reserved.++ Licensed under the Apache License, Version 2.0 (the "License");+ you may not use this file except in compliance with the License.+ You may obtain a copy of the License at++ http://www.apache.org/licenses/LICENSE-2.0++ Unless required by applicable law or agreed to in writing, software+ distributed under the License is distributed on an "AS IS" BASIS,+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+ See the License for the specific language governing permissions and+ limitations under the License.+-}++import CodeWorld+import CodeWorld.EntryPoints+import Test.Framework (defaultMain, Test, testGroup)+import Test.Framework.Providers.HUnit (testCase)+import Test.HUnit hiding (Test)++main :: IO ()+main = defaultMain [wrapperIdentityTests]++checkWrappedIdentity :: (Wrapped a -> Wrapped a) -> Wrapped a -> Assertion+checkWrappedIdentity f x = assertBool "identity" (identical x (f x))++wrapperIdentityTests :: Test+wrapperIdentityTests = testGroup "wrapperIdentityTests"+ [ testCase "toState preserves identity" $+ checkWrappedIdentity (toState id) (wrappedInitial (42 :: Int))+ , testCase "wrappedStep preserves identity" $+ checkWrappedIdentity (wrappedStep (const id) 1) (wrappedInitial (42 :: Int))+ , testCase "wrapping of shared identity is shared (events)" $+ checkWrappedIdentity (wrappedEvent (const [])+ (const id)+ (const id)+ (TimePassing 1))+ (wrappedInitial (42 :: Int))+ ]