From 9a69b8f4f0bcad0d224e371292be778e9f80e5d6 Mon Sep 17 00:00:00 2001 From: Evan Hemsley Date: Sun, 1 Dec 2019 13:43:31 -0800 Subject: [PATCH] updating docs for C# --- .gitignore | 1 + .travis.yml | 2 +- config.toml | 1 + content/_index.md | 9 +- content/concepts/component.md | 31 +++--- content/concepts/engine.md | 54 +++++++--- content/concepts/entity.md | 8 +- content/concepts/message.md | 13 ++- content/concepts/renderer.md | 93 +++++++++++++----- content/concepts/world.md | 65 ++++++++---- content/concepts/world_builder.md | 56 ++++++----- content/getting_started/choosing.md | 9 +- content/getting_started/editor.md | 2 +- content/why/architecture/hyper_ecs.md | 16 +-- static/js/highlight.pack.js | 4 +- .../static/css/hugo-theme.css | 4 +- themes/hugo-theme-learn/static/css/theme.css | 18 +++- .../fonts/publicsans-light-webfont.woff | Bin 0 -> 28164 bytes .../fonts/publicsans-light-webfont.woff2 | Bin 0 -> 21320 bytes .../fonts/publicsans-regular-webfont.woff | Bin 0 -> 27884 bytes .../fonts/publicsans-regular-webfont.woff2 | Bin 0 -> 21504 bytes 21 files changed, 246 insertions(+), 140 deletions(-) create mode 100644 themes/hugo-theme-learn/static/fonts/publicsans-light-webfont.woff create mode 100644 themes/hugo-theme-learn/static/fonts/publicsans-light-webfont.woff2 create mode 100644 themes/hugo-theme-learn/static/fonts/publicsans-regular-webfont.woff create mode 100644 themes/hugo-theme-learn/static/fonts/publicsans-regular-webfont.woff2 diff --git a/.gitignore b/.gitignore index e69de29..a48cf0d 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +public diff --git a/.travis.yml b/.travis.yml index e3a70df..4e3c728 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,7 @@ deploy: # The output of our static site local_dir: public # The repository we are deploying to - repo: encompass-ecs/encompass-ecs.github.io + repo: MoonsideGames/moonsidegames.github.io # The branch we are pushing the static repository target_branch: master # Information to use in the commit diff --git a/config.toml b/config.toml index 2a886a9..bd44d9c 100644 --- a/config.toml +++ b/config.toml @@ -1,4 +1,5 @@ baseURL = "/" +publishDir = "public/docs/encompass" languageCode = "en-US" title = "Encompass Docs" theme = ["hugo-notice", "hugo-theme-learn"] diff --git a/content/_index.md b/content/_index.md index 5dc6d44..8f9751a 100644 --- a/content/_index.md +++ b/content/_index.md @@ -6,13 +6,8 @@ title: "Encompass" [Encompass](https://github.com/encompass-ecs) is a powerful engine-agnostic framework to help you code games, or other kinds of simulations. -Object-oriented code is messy and rapidly becomes unmaintainable. +Object-oriented code scales and iterates poorly and rapidly becomes unmaintainable. -Encompass lets you write clean, de-coupled code so you can spend more time on your game design and less time fixing bugs. - -Encompass is currently available with a TypeScript implementation that fully supports transpilation to Javascript and -[Lua](https://github.com/TypeScriptToLua/TypeScriptToLua). - -A C# implementation is forthcoming. +Encompass lets you write clean, de-coupled code so you can spend more time on your game design and less time worrying about inheritance chains and fixing bugs. If you are here to learn how to use Encompass and don't care about the justifications for it, or you've never made a game before, I recommend skipping ahead to [Chapter 2](getting_started). diff --git a/content/concepts/component.md b/content/concepts/component.md index 4cb621e..3ba39a1 100644 --- a/content/concepts/component.md +++ b/content/concepts/component.md @@ -6,28 +6,33 @@ weight: 5 A Component is a collection of related data. -To define a Component, extend the Component class. +To define a Component, declare a struct which implements the **IComponent** interface. -```ts -import { Component } from "encompass-ecs"; +```cs +using Encompass; +using System.Numerics; -class PositionComponent extends Component { - public x: number; - public y: number; +public struct VelocityComponent : IComponent { + public Vector2 velocity; } ``` -Components are created in context with an Entity. +Components are attached to Entities with the **SetComponent** method. -```ts -const entity = World.create_entity(); -const position = entity.add_component(PositionComponent); -position.x = 3; -position.y = -4; +```cs +using Encompass; + +... + +var worldBuilder = new WorldBuilder(); +var entity = worldBuilder.CreateEntity(); +worldBuilder.SetComponent(entity, new VelocityComponent { velocity = Vector2.Zero }); ``` +**SetComponent** can also be used from within an **Engine**. We will talk more about this later. + Components cannot exist apart from an Entity and are automagically destroyed when they are removed or their Entity is destroyed. {{% notice warning %}} -Components should **never** reference other Components. This breaks the principle of loose coupling. You **will** regret it if you do this. +Components should **never** reference other Components directly. This breaks the principle of loose coupling. You **will** regret it if you do this. {{% /notice %}} diff --git a/content/concepts/engine.md b/content/concepts/engine.md index 62a5365..44d397f 100644 --- a/content/concepts/engine.md +++ b/content/concepts/engine.md @@ -10,29 +10,51 @@ An Engine is the Encompass notion of an ECS System. Much like the engine on a tr I never liked the term System. It is typically used to mean structures in game design and I found this confusing when discussing code implementation vs design. {{% /notice %}} -Engines are responsible for reading the game state, reading messages, emitting messages, and creating or mutating Entities and Components. +Engines may read any Entities and Components in the game world, read and send messages, and create and update Entities and Components. -An Engine which Reads a particular message is guaranteed to run *after* all Engines which Emit that particular message. +An Engine which Reads a particular message is guaranteed to run *after* all Engines which Send that particular message. To define an Engine, extend the Engine class. -Here is an example Engine: +Let's say we wanted to allow Entities to temporarily pause their motion for a specified amount of time. Here is an example Engine: -```ts -import { Engine, Mutates, Reads } from "encompass-ecs"; -import { LogoUIComponent } from "../../components/ui/logo"; -import { ShowUIMessage } from "../../messages/show_ui"; +```cs +using Encompass; -@Reads(ShowUIMessage) -@Mutates(LogoUIComponent) -export class LogoDisplayEngine extends Engine { - public update() { - const logo_ui_component = this.read_component_mutable(LogoUIComponent); - if (logo_ui_component && this.some(ShowUIMessage)) { - logo_ui_component.image.isVisible = true; +[Reads(typeof(PauseComponent))] +[Receives(typeof(PauseMessage))] +[Writes(typeof(PauseComponent))] +public class PauseEngine : Engine +{ + public override void Update(double dt) + { + foreach (var (pauseComponent, entity) in ReadComponentsIncludingEntity()) + { + var timer = pauseComponent.timer; + timer -= dt; + + if (timer <= 0) + { + RemoveComponent(entity); + } + else + { + SetComponent(entity, new PauseComponent { timer = timer }); + } + } + + foreach (var pauseMessage in ReadMessages()) + { + SetComponent(pauseMessage.entity, new PauseComponent + { + timer = pauseMessage.time + }); + } } - } } + ``` -If a LogoUIComponent exists, and a ShowUIMessage is received, it will make the logo image on the LogoUIComponent visible. Simple! +This engine deals with a Component called a PauseComponent. PauseComponent has a timer which counts down based on delta-time. When the timer ticks past zero, the PauseComponent is removed. If a PauseMessage is received, a new PauseComponent is attached to the Entity specified by the message. + +Notice that this Engine doesn't actually "do" the pausing, or even care if the Entity in question is capable of movement or not. In Engines that deals with movement, we can check if the Entities being moved have PauseComponents and modify how they are updated accordingly. This is the power of de-coupled logic at work. diff --git a/content/concepts/entity.md b/content/concepts/entity.md index 14d0db1..a50127e 100644 --- a/content/concepts/entity.md +++ b/content/concepts/entity.md @@ -8,12 +8,8 @@ An Entity is a structure composed of a unique ID and a collection of Components. Entities do not have any implicit properties or behaviors. They are granted these by their collection of Components. -There is no limit to the amount of Components an Entity may have, and Entities can have any number of Components of a particular type. +There is no limit to the amount of Components an Entity may have, but Entities may only have a single Component of a particular type. -Entities are active by default and can be deactivated. They can also be destroyed, permanently removing them and their components from the World. +Entities can also be destroyed, permanently removing them and their components from the World. Entities are created either by the WorldBuilder or by Engines. (We'll get into these soon.) - -{{% notice warning %}} -You should **never** add methods or properties to an Entity. This is what Components are for. -{{% /notice %}} diff --git a/content/concepts/message.md b/content/concepts/message.md index 60f52db..7641bca 100644 --- a/content/concepts/message.md +++ b/content/concepts/message.md @@ -8,19 +8,18 @@ Similar to Components, Messages are collections of data. Messages are used to transmit data between Engines so they can manipulate the game state accordingly. -To define a message, extend the Message class. +To define a message, declare a struct which implements the IMessage interface. -```ts -import { Message } from "encompass-ecs"; +```cs +using Encompass; -class MotionMessage extends Message { - public x: number; - public y: number; +public struct MotionMessage : IMessage { + public Vector2 motion; } ``` Messages are temporary and destroyed at the end of the frame. {{% notice notice %}} -Ok fine, since you asked, Messages actually live in an object pool so that they aren't garbage-collected at runtime. But you as the game developer don't have to worry about that. +Because structs are value types, we can create as many of them as we want without worrying about creating pressure on the garbage collector. Neato! {{% /notice %}} diff --git a/content/concepts/renderer.md b/content/concepts/renderer.md index 4732dee..3c99118 100644 --- a/content/concepts/renderer.md +++ b/content/concepts/renderer.md @@ -7,50 +7,91 @@ weight: 30 A Renderer is responsible for reading the game state and telling the game engine what to draw to the screen. {{% notice notice %}} -Remember: Encompass isn't a game engine and it doesn't have a rendering system. So Renderers aren't actually doing the rendering, they're just telling the game engine what to render. +Remember: Encompass isn't a game engine and it doesn't have a rendering system. So Renderers aren't actually doing the rendering,it is just a way to structure how we tell the game engine what to render. {{% /notice %}} -There are two kinds of renderers: GeneralRenderers and EntityRenderers. +There are two kinds of renderers: GeneralRenderers and OrderedRenderers. A GeneralRenderer is a Renderer which reads the game state in order to draw elements to the screen. It also requires a layer, which represents the order in which it will draw to the screen. -If you were using the LOVE engine, a GeneralRenderer might look like this: +If you were using MonoGame, a GeneralRenderer might look like this: -```ts -import { GeneralRenderer } from "encompass-ecs"; -import { ScoreComponent } from "game/components/score"; +```cs +using System; +using Encompass; +using Microsoft.Xna.Framework; +using SamuraiGunn2.Components; +using SamuraiGunn2.Editor.Components; +using SamuraiGunn2.Helpers; -export class ScoreRenderer extends GeneralRenderer { - public layer = 4; +namespace SamuraiGunn2.Editor.Renderers +{ + public class GridRenderer : GeneralRenderer + { + private int gridSize; + private PrimitiveDrawer primitiveDrawer; - public render() { - const score_component = this.read_component(ScoreComponent); + public GridRenderer(PrimitiveDrawer primitiveDrawer) + { + this.primitiveDrawer = primitiveDrawer; + this.gridSize = 16; + } - love.graphics.print(score_component.score, 20, 20); + public override void Render() + { + if (SomeComponent() && SomeComponent()) + { + var entity = ReadEntity(); + var transformComponent = GetComponent(entity); + + Rectangle rectangle = new Rectangle + { + X = (transformComponent.Position.X / gridSize) * gridSize, + Y = (transformComponent.Position.Y / gridSize) * gridSize, + Width = gridSize, + Height = gridSize + }; + + primitiveDrawer.DrawBorder(rectangle, 0, new System.Numerics.Vector2(1, 1), Color.White, 1); + } + } } } ``` -An EntityRenderer provides a structure for the common pattern of drawing an Entity which has a particular collection of Components and a specific type of DrawComponent. They also have the ability to draw DrawComponents at their specific layer. +GeneralRenderers are great for things like UI layers, where we always want a group of particular elements to be drawn at a specific layer regardless of the specifics of the game state. -If you were using the LOVE engine, a GeneralRenderer might look like this: +An OrderedRenderer provides a structure for the common pattern of wanting to draw an individual Component at a specific layer. OrderedRenderers must specify a component that implements IDrawableComponent. -```ts -import { EntityRenderer } from "encompass-ecs"; -import { PointComponent } from "game/components/point"; -import { PositionComponent } from "game/components/position"; +If you were using MonoGame, an OrderedRenderer might look like this: -@Renders(PointComponent, PositionComponent) -export class PointRenderer extends EntityRenderer { - public render(entity: Entity) { - const point_component = entity.get_component(PointComponent); - const position_component = entity.get_component(PositionComponent); +```cs +using Encompass; +using Microsoft.Xna.Framework.Graphics; +using SamuraiGunn2.Components; +using SamuraiGunn2.Extensions; +using System; +using System.Numerics; - const color = point_component.color; - love.graphics.setColor(color.r, color.g, color.b, color.a); - love.graphics.point(position_component.x, position_component.y); +namespace SamuraiGunn2.Renderers +{ + public class Texture2DRenderer : OrderedRenderer + { + private SpriteBatch spriteBatch; + + public Texture2DRenderer(SpriteBatch spriteBatch) + { + this.spriteBatch = spriteBatch; + } + + public override void Render(Entity entity, Texture2DComponent textureComponent) + { + var transformComponent = GetComponent(entity); + + spriteBatch.Draw(textureComponent.texture, transformComponent.Position, null, textureComponent.color, transformComponent.Rotation, textureComponent.origin, transformComponent.Scale, SpriteEffects.None, 0); + } } } ``` -For 2D games, you will need to use layers to be specific about the order in which entities draw. For a 3D game you will probably end up delegating rendering to some kind of scene/camera system. +For 2D games, you will need to use layers to be specific about the order in which elements are drawn to the screen. For a 3D game you will probably end up delegating most of the rendering to some kind of scene/camera system. diff --git a/content/concepts/world.md b/content/concepts/world.md index ce0ede4..518519b 100644 --- a/content/concepts/world.md +++ b/content/concepts/world.md @@ -6,32 +6,59 @@ weight: 100 World is the pie crust that contains all the delicious Encompass ingredients together. -The World's *update* function drives the simulation and should be controlled from your engine's update loop. +The World's *Update* function drives the simulation and should be controlled from your engine's update loop. -The World's *draw* function tells the Renderers to draw the scene. +The World's *Draw* function tells the Renderers to draw the scene. -In LÖVE, the starter project game loop looks like this: +In MonoGame, the game loop looks something like this: -```ts -export class Game { - private world: World; - private canvas: Canvas; +```cs +using Encompass; +using Microsoft.Xna.Framework; + +public class MyGame : Game +{ + private World world; + SpriteBatch spriteBatch; + + RenderTarget2D gameRenderTarget; + RenderTarget2D levelBrowserRenderTarget; + RenderTarget2D uiRenderTarget; ... - public update(dt: number) { - this.world.update(dt); + /// + /// Allows the game to run logic such as updating the world, + /// checking for collisions, gathering input, and playing audio. + /// + /// Provides a snapshot of timing values. + protected override void Update(GameTime gameTime) + { + if (GamePad.GetState(Microsoft.Xna.Framework.PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) + Exit(); + + world.Update(gameTime.ElapsedGameTime.TotalSeconds); + + base.Update(gameTime); } - public draw() { - love.graphics.clear(); - love.graphics.setCanvas(this.canvas); - love.graphics.clear(); - this.world.draw(); - love.graphics.setCanvas(); - love.graphics.setBlendMode("alpha", "premultiplied"); - love.graphics.setColor(1, 1, 1, 1); - love.graphics.draw(this.canvas); + /// + /// This is called when the game should draw itself. + /// + /// Provides a snapshot of timing values. + protected override void Draw(GameTime gameTime) + { + world.Draw(); + + GraphicsDevice.SetRenderTarget(null); + + spriteBatch.Begin(SpriteSortMode.Deferred, null, SamplerState.PointClamp); + spriteBatch.Draw(gameRenderTarget, windowDimensions, Color.White); + spriteBatch.Draw(levelBrowserRenderTarget, windowDimensions, Color.White); + spriteBatch.Draw(uiRenderTarget, windowDimensions, Color.White); + spriteBatch.End(); + + base.Draw(gameTime); } } ``` @@ -46,4 +73,6 @@ Certain Encompass projects actually have multiple separate Worlds to manage cert *dt* stands for delta-time. Correct usage of delta-time is crucial to make sure that your game does not become *frame-dependent*, which is very bad. We'll talk more about frame-dependence later in the tutorial, but to briefly summarize, if your game is frame-dependent you will run into very frustrating behavior when running your game on different computer systems. +Even if you lock your game to a fixed timestep, writing your game with delta-time in mind can be the difference between changing the timestep being a one-line tweak or a weeks long hair-pulling nightmare. + That's it! Now that we have these high-level concepts down, let's build an actual, for-real game. diff --git a/content/concepts/world_builder.md b/content/concepts/world_builder.md index 851c30c..43b8ac0 100644 --- a/content/concepts/world_builder.md +++ b/content/concepts/world_builder.md @@ -6,45 +6,49 @@ weight: 35 WorldBuilder is used to construct a World from Engines, Renderers, and an initial state of Entities, Components, and Messages. -The WorldBuilder enforces certain rules about Engine structure. It is forbidden to have messages create cycles between Engines, and no Component may be mutated by more than one Engine. +The WorldBuilder enforces certain rules about Engine structure. It is forbidden to have messages create cycles between Engines, and no Component may be mutated by more than one Engine without declaring a priority. -The WorldBuilder uses Engines and their Message read/emit information to determine a valid ordering of the Engines, which is given to the World. +The WorldBuilder uses Engines and their Message read/send information to determine a valid ordering of the Engines, which is given to the World. -Here is an example usage: +Here is an example usage with MonoGame: -```ts -import { WorldBuilder } from "encompass-ecs"; -import { CanvasComponent } from "./components/canvas"; -import { PositionComponent } from "./components/position"; -import { VelocityComponent } from "./components/velocity"; -import { MotionEngine } from "./engines/motion"; -import { CanvasRenderer } from "./renderers/canvas"; +```cs +using Encompass; +using Microsoft.Xna.Framework; -class Game { +public class MyGame : Game +{ private World world; ... - public load() { - const world_builder = new WorldBuilder(); + protected override void LoadContent() + { + var worldBuilder = new WorldBuilder(); - world_builder.add_engine(MotionEngine); - world_builder.add_renderer(CanvasRenderer); + worldBuilder.AddEngine(new MotionEngine()); + worldBuilder.AddEngine(new TextureRenderer()); - const entity = world_builder.create_entity(); + var entity = worldBuilder.CreateEntity(); - const position_component = entity.add_component(PositionComponent); - position_component.x = 0; - position_component.y = 0; + SetComponent(entity, new PositionComponent + { + x = 0, + y = 0 + }); - const velocity_component = entity.add_component(VelocityComponent); - velocity_component.x = 20; - velocity_component.y = 0; + SetComponent(entity, new VelocityComponent + { + x = 20, + y = 0 + }); - const sprite_component = entity.add_component(SpriteComponent); - canvas_component.canvas = love.graphics.newImage("assets/sprites/ball.png"); + SetComponent(entity, new TextureComponent + { + texture = TextureHelper.LoadTexture("assets/sprites/ball.png") + }); - this.world = world_builder.build(); + world = worldBuilder.Build(); } ... @@ -54,5 +58,5 @@ class Game { Now our game will initialize with a ball that moves horizontally across the screen! {{% notice tip %}} -Make sure that you remember to add Engines to the WorldBuilder when you define them. Otherwise nothing will happen, which can be very embarrassing. +Be extra careful that you remember to add Engines to the WorldBuilder when you define them. Otherwise nothing will happen, which can be very embarrassing. {{% /notice %}} diff --git a/content/getting_started/choosing.md b/content/getting_started/choosing.md index 78d2a8e..fd11a34 100644 --- a/content/getting_started/choosing.md +++ b/content/getting_started/choosing.md @@ -16,17 +16,16 @@ That means it needs to run on top of an engine. Ultimately, this is a question that you have to answer for your project. Is there an engine you're already comfortable with? Which platforms are you targeting? Linux? PS4? Android? Are there any features you would really like to have, like a built-in physics simulator? These are questions that could help you choose an engine. -Encompass-TS can hook into any engine that supports JavaScript or Lua scripting. -Encompass-CS can hook into any engine that supports C# scripting. (**NOTE:** Encompass-CS is not done yet.) +Encompass-CS can hook into any engine that supports C# scripting. So you have a lot of choices! Here are some engines that I have used: -[LÖVE](https://love2d.org/) is a wonderful little framework for 2D games. It's cross-platform and very lightweight, but with a lot of powerful features, including a complete physics simulator. It uses Lua scripting, so you would want Encompass-TS. - [MonoGame](http://www.monogame.net/) is a cross-platform 2D/3D framework that thousands of games have used. You can use it to ship games on basically any platform that exists and it is extremely well-supported. It uses C# scripting. -[BabylonJS](https://www.babylonjs.com/) uses the power of WebGL to run 3D games in the browser. It has a powerful graphics pipeline and you can make stuff that has some wow factor. It runs on JS. +FNA + +Unity uses C# scripting, but you would have to adapt it in certain ways to the bastardized Unity architecture. I personally have never tried this but you are certainly welcome to give it a shot! Encompass gives you the power to develop using many different engines, so feel free to experiment and find one you like! And if you switch to an engine that uses the same scripting language, it's actually very easy to switch engines, because the simulation layer is mostly self-contained. diff --git a/content/getting_started/editor.md b/content/getting_started/editor.md index ab6c7eb..4b6c190 100644 --- a/content/getting_started/editor.md +++ b/content/getting_started/editor.md @@ -6,6 +6,6 @@ weight: 9 You will want some kind of text editor to develop Encompass projects. -I _highly_ recommend [VSCodium](https://vscodium.com/) if you are on Windows or OSX, and Code - OSS if you are on Linux. These are open-source distributions of Microsoft's VSCode editor, which features excellent Typescript integration and various convenient features, like an integrated Git interface and terminal. (Make sure you set the terminal to Git Bash if you are on Windows - this is under File -> Settings.) +I _highly_ recommend [VSCodium](https://vscodium.com/) if you are on Windows or OSX, and Code - OSS if you are on Linux. These are open-source distributions of Microsoft's VSCode editor, which features excellent C# integration and various convenient features, like an integrated Git interface and terminal. (Make sure you set the terminal to Git Bash if you are on Windows - this is under File -> Settings.) Of course, if you prefer some other editor, that will be perfectly fine. diff --git a/content/why/architecture/hyper_ecs.md b/content/why/architecture/hyper_ecs.md index 33ac870..3562212 100644 --- a/content/why/architecture/hyper_ecs.md +++ b/content/why/architecture/hyper_ecs.md @@ -10,28 +10,28 @@ The core of the architecture is the introduction of a new construct to ECS: the A Message is fundamentally a variant of Component, in that it only contains data. But, it is designed to be temporary and is discarded at the end of each frame. It is used to communicate useful information between Systems. -We also introduce some extra information to Systems. Each System must declare the Messages that it **Reads**, the Messages that it **Emits**, and the Components that it **Mutates**. +We also introduce some extra information to Systems. Each System must declare the Messages that it **Receives**, the Messages that it **Sends**, the Components that it **Reads** and the Components that it **Writes**. Let's go back to our earlier example. We have TransformComponent, which contains position and orientation data, and VelocityComponent, which contains an *x* and *y* component for linear motion. -Our MotionDetecterSystem reads each Entity that has both a TransformComponent and a VelocityComponent, and emits a MotionMessage, which contains a reference to the specific TransformComponent and the *x* and *y* velocity given by the VelocityComponent. +Our MotionDetecterSystem reads each Entity that has both a TransformComponent and a VelocityComponent, and emits a MotionMessage, which contains a reference to the Entity and the *x* and *y* velocity given by the VelocityComponent. -We also have a TeleportSystem that needs to teleport the character forward a bit. Let's say when the player presses the X button, a TeleportMessage is fired. The TeleportSystem reads this message and emits a MotionMessage in response. +We also have a **TeleportSystem** that needs to teleport the character forward a bit. Let's say when the player presses the X button, a TeleportMessage is fired. The TeleportSystem reads this message and emits a MotionMessage in response. -Now we have our MotionSystem. The MotionSystem declares that it Mutates the TransformComponent, reads the MotionMessages that apply to each TransformComponent, and applies them simultaneously, adding their *x* and *y* values to the TransformComponent. Voilà! No race conditions! And we can re-use similar behaviors easily without re-writing code by consolidating Messages. +Now we have our **MotionSystem**. The MotionSystem declares that it Mutates the TransformComponent, reads the MotionMessages that apply to each TransformComponent, and applies them simultaneously, adding their *x* and *y* values to the TransformComponent. Voilà! No race conditions! We can re-use similar behaviors easily without re-writing code by consolidating Messages. You might be wondering: how does the game know which order these systems need to be in? Well... **Hyper ECS figures it out for you.** -That's right! With the power of graph theory, we can construct an order for our Systems so that any System which Emits a certain Message runs before any System that Reads the same Message. This means, when you write behavior for your game, you *never* have to specify the order in which your Systems run. You simply write code, and the Systems run in a valid order, every time, without surprising you. +That's right! With the power of graph theory, we can construct an order for our Systems so that any System which Sends a certain Message runs before any System that Reads the same Message. This means, when you write behavior for your game, you *never* have to specify the order in which your Systems run. You simply write code, and the Systems run in a valid order, every time, without surprising you. Of course, to accomplish this, there are some restrictions that your Systems must follow. -Systems are not allowed to create message cycles. If System A emits Message B, which is read by System B which emits Message C, which is read by System A, then we cannot create a valid ordering of Systems. This is not a flaw in the architecture: A message cycle is simply evidence that you haven't quite thought through what your Systems are doing, and can generally be easily eliminated by the introduction of a new System. +Systems are not allowed to create message cycles. If System A sends Message B, which is read by System B which emits Message C, which is read by System A, then we cannot create a valid ordering of Systems. This is not a flaw in the architecture: A message cycle is simply evidence that you haven't quite thought through what your Systems are doing, and can generally be easily eliminated by the introduction of a new System. -Two separate systems are not allowed to Mutate the same Component. Obviously, if we allowed this, we would introduce the possibility of two Systems changing the same component, creating a race condition. If we have two Systems where it makes sense to change the same Component, we can create a new Message and System to consolidate the changes, and avoid race conditions. +The other restriction involves two separate systems which Write the same Component. They may do so, but they must declare a priority. Obviously, if we allowed Systems to Write components willy-nilly, we would introduce the possibility of two Systems changing the same component on the same frame, creating a race condition. If we have two Systems where it makes sense to change the same Component, we can either create a new Message and System to consolidate the changes, or we can declare write priority so that one System's changes always override the other's. This way we can avoid race conditions. -If you are used to programming games in an object-oriented way, you will likely find the ECS pattern counter-intuitive at first. But once you learn to think in a Hyper ECS way, you will be shocked at how flexible and simple your programs become. +If you are used to programming games in an object-oriented way, you will likely find the pattern counter-intuitive at first. But once you learn to think in a Hyper ECS way, you will be shocked at how flexible and simple your programs become. diff --git a/static/js/highlight.pack.js b/static/js/highlight.pack.js index 93adfb4..6d0a2f9 100644 --- a/static/js/highlight.pack.js +++ b/static/js/highlight.pack.js @@ -1,2 +1,2 @@ -/*! highlight.js v9.15.8 | BSD3 License | git.io/hljslicense */ -!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(a){var f=[],u=Object.keys,N={},c={},n=/^(no-?highlight|plain|text)$/i,s=/\blang(?:uage)?-([\w-]+)\b/i,t=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,r={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",relevance:"r",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},b="",h={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function _(e){return e.replace(/&/g,"&").replace(//g,">")}function E(e){return e.nodeName.toLowerCase()}function v(e,n){var t=e&&e.exec(n);return t&&0===t.index}function l(e){return n.test(e)}function g(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function R(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:"start",offset:t,node:r}),t=e(r,t),E(r).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:r}));return t}(e,0),a}function i(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(i)}}function m(o){function s(e){return e&&e.source||e}function c(e,n){return new RegExp(s(e),"m"+(o.cI?"i":"")+(n?"g":""))}!function n(t,e){if(!t.compiled){if(t.compiled=!0,t.k=t.k||t.bK,t.k){function r(t,e){o.cI&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})}var a={};"string"==typeof t.k?r("keyword",t.k):u(t.k).forEach(function(e){r(e,t.k[e])}),t.k=a}t.lR=c(t.l||/\w+/,!0),e&&(t.bK&&(t.b="\\b("+t.bK.split(" ").join("|")+")\\b"),t.b||(t.b=/\B|\b/),t.bR=c(t.b),t.endSameAsBegin&&(t.e=t.b),t.e||t.eW||(t.e=/\B|\b/),t.e&&(t.eR=c(t.e)),t.tE=s(t.e)||"",t.eW&&e.tE&&(t.tE+=(t.e?"|":"")+e.tE)),t.i&&(t.iR=c(t.i)),null==t.r&&(t.r=1),t.c||(t.c=[]),t.c=Array.prototype.concat.apply([],t.c.map(function(e){return function(n){return n.v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return g(n,{v:null},e)})),n.cached_variants||n.eW&&[g(n)]||[n]}("self"===e?t:e)})),t.c.forEach(function(e){n(e,t)}),t.starts&&n(t.starts,e);var i=t.c.map(function(e){return e.bK?"\\.?(?:"+e.b+")\\.?":e.b}).concat([t.tE,t.i]).map(s).filter(Boolean);t.t=i.length?c(function(e,n){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i')+n+(t?"":b):n}function o(){E+=null!=l.sL?function(){var e="string"==typeof l.sL;if(e&&!N[l.sL])return _(g);var n=e?C(l.sL,g,!0,f[l.sL]):O(g,l.sL.length?l.sL:void 0);return 0")+'"');return g+=n,n.length||1}var s=B(e);if(!s)throw new Error('Unknown language: "'+e+'"');m(s);var a,l=t||s,f={},E="";for(a=l;a!==s;a=a.parent)a.cN&&(E=c(a.cN,"",!0)+E);var g="",R=0;try{for(var d,p,M=0;l.t.lastIndex=M,d=l.t.exec(n);)p=r(n.substring(M,d.index),d[0]),M=d.index+p;for(r(n.substr(M)),a=l;a.parent;a=a.parent)a.cN&&(E+=b);return{r:R,value:E,language:e,top:l}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:_(n)};throw e}}function O(t,e){e=e||h.languages||u(N);var r={r:0,value:_(t)},a=r;return e.filter(B).filter(M).forEach(function(e){var n=C(e,t,!1);n.language=e,n.r>a.r&&(a=n),n.r>r.r&&(a=r,r=n)}),a.language&&(r.second_best=a),r}function d(e){return h.tabReplace||h.useBR?e.replace(t,function(e,n){return h.useBR&&"\n"===e?"
":h.tabReplace?n.replace(/\t/g,h.tabReplace):""}):e}function o(e){var n,t,r,a,i,o=function(e){var n,t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=s.exec(i))return B(t[1])?t[1]:"no-highlight";for(n=0,r=(i=i.split(/\s+/)).length;n/g,"\n"):n=e,i=n.textContent,r=o?C(o,i,!0):O(i),(t=R(n)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=r.value,r.value=function(e,n,t){var r=0,a="",i=[];function o(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function u(e){a+=""}function s(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var l=o();if(a+=_(t.substring(r,l[0].offset)),r=l[0].offset,l===e){for(i.reverse().forEach(u);s(l.splice(0,1)[0]),(l=o())===e&&l.length&&l[0].offset===r;);i.reverse().forEach(c)}else"start"===l[0].event?i.push(l[0].node):i.pop(),s(l.splice(0,1)[0])}return a+_(t.substr(r))}(t,R(a),i)),r.value=d(r.value),e.innerHTML=r.value,e.className=function(e,n,t){var r=n?c[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}(e.className,o,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function p(){if(!p.called){p.called=!0;var e=document.querySelectorAll("pre code");f.forEach.call(e,o)}}function B(e){return e=(e||"").toLowerCase(),N[e]||N[c[e]]}function M(e){var n=B(e);return n&&!n.disableAutodetect}return a.highlight=C,a.highlightAuto=O,a.fixMarkup=d,a.highlightBlock=o,a.configure=function(e){h=g(h,e)},a.initHighlighting=p,a.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",p,!1),addEventListener("load",p,!1)},a.registerLanguage=function(n,e){var t=N[n]=e(a);i(t),t.aliases&&t.aliases.forEach(function(e){c[e]=n})},a.listLanguages=function(){return u(N)},a.getLanguage=B,a.autoDetection=M,a.inherit=g,a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",r:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},a.C=a.COMMENT=function(e,n,t){var r=a.inherit({cN:"comment",b:e,e:n,c:[]},t||{});return r.c.push(a.PWM),r.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),r},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,r:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,r:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,r:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,r:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,r:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,r:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,r:0},a});hljs.registerLanguage("typescript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"},n={cN:"meta",b:"@"+r},a={b:"\\(",e:/\)/,k:t,c:["self",e.QSM,e.ASM,e.NM]},o={cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:[e.CLCM,e.CBCM,n,a]};return{aliases:["ts"],k:t,c:[{cN:"meta",b:/^\s*['"]use strict['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+e.IR+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:e.IR},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:["self",e.CLCM,e.CBCM]}]}]}],r:0},{cN:"function",b:"function",e:/[\{;]/,eE:!0,k:t,c:["self",e.inherit(e.TM,{b:r}),o],i:/%/,r:0},{bK:"constructor",e:/\{/,eE:!0,c:["self",o]},{b:/module\./,k:{built_in:"module"},r:0},{bK:"module",e:/\{/,eE:!0},{bK:"interface",e:/\{/,eE:!0,k:"interface extends"},{b:/\$[(.]/},{b:"\\."+e.IR,r:0},n,a]}}); \ No newline at end of file +/*! highlight.js v9.16.2 | BSD3 License | git.io/hljslicense */ +!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"==typeof exports||exports.nodeType?n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs})):e(exports)}(function(a){var f=[],i=Object.keys,b={},u={},n=/^(no-?highlight|plain|text)$/i,l=/\blang(?:uage)?-([\w-]+)\b/i,t=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,r={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},_="",m={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},c="of and for in not or if then".split(" ");function C(e){return e.replace(/&/g,"&").replace(//g,">")}function E(e){return e.nodeName.toLowerCase()}function o(e){return n.test(e)}function s(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function g(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:"start",offset:t,node:r}),t=e(r,t),E(r).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:r}));return t}(e,0),a}function d(e,n,t){var r=0,a="",i=[];function c(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function l(e){a+=""}function o(e){("start"===e.event?u:l)(e.node)}for(;e.length||n.length;){var s=c();if(a+=C(t.substring(r,s[0].offset)),r=s[0].offset,s===e){for(i.reverse().forEach(l);o(s.splice(0,1)[0]),(s=c())===e&&s.length&&s[0].offset===r;);i.reverse().forEach(u)}else"start"===s[0].event?i.push(s[0].node):i.pop(),o(s.splice(0,1)[0])}return a+C(t.substr(r))}function R(n){return n.v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return s(n,{v:null},e)})),n.cached_variants?n.cached_variants:function e(n){return!!n&&(n.eW||e(n.starts))}(n)?[s(n,{starts:n.starts?s(n.starts):null})]:[n]}function v(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(v)}}function p(n,r){var a={};return"string"==typeof n?t("keyword",n):i(n).forEach(function(e){t(e,n[e])}),a;function t(t,e){r&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,function(e,n){return n?Number(n):function(e){return-1!=c.indexOf(e.toLowerCase())}(e)?0:1}(n[0],n[1])]})}}function O(r){function s(e){return e&&e.source||e}function f(e,n){return new RegExp(s(e),"m"+(r.cI?"i":"")+(n?"g":""))}function a(a){var i,e,c={},u=[],l={},t=1;function n(e,n){c[t]=e,u.push([e,n]),t+=function(e){return new RegExp(e.toString()+"|").exec("").length-1}(n)+1}for(var r=0;r')+n+(t?"":_)}function l(){R+=null!=g.sL?function(){var e="string"==typeof g.sL;if(e&&!b[g.sL])return C(v);var n=e?x(g.sL,v,!0,d[g.sL]):B(v,g.sL.length?g.sL:void 0);return 0")+'"');if("end"===n.type){var r=function(e){var n=e[0],t=c(g,n);if(t){var r=g;for(r.skip?v+=n:(r.rE||r.eE||(v+=n),l(),r.eE&&(v=n));g.cN&&(R+=_),g.skip||g.sL||(p+=g.relevance),(g=g.parent)!==t.parent;);return t.starts&&(t.endSameAsBegin&&(t.starts.eR=t.eR),o(t.starts)),r.rE?0:n.length}}(n);if(null!=r)return r}return v+=t,t.length}var E=S(e);if(!E)throw new Error('Unknown language: "'+e+'"');O(E);var r,g=n||E,d={},R="";for(r=g;r!==E;r=r.parent)r.cN&&(R=u(r.cN,"",!0)+R);var v="",p=0;try{for(var M,N,h=0;g.t.lastIndex=h,M=g.t.exec(a);)N=t(a.substring(h,M.index),M),h=M.index+N;for(t(a.substr(h)),r=g;r.parent;r=r.parent)r.cN&&(R+=_);return{relevance:p,value:R,i:!1,language:e,top:g}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{i:!0,relevance:0,value:C(a)};throw e}}function B(t,e){e=e||m.languages||i(b);var r={relevance:0,value:C(t)},a=r;return e.filter(S).filter(T).forEach(function(e){var n=x(e,t,!1);n.language=e,n.relevance>a.relevance&&(a=n),n.relevance>r.relevance&&(a=r,r=n)}),a.language&&(r.second_best=a),r}function M(e){return m.tabReplace||m.useBR?e.replace(t,function(e,n){return m.useBR&&"\n"===e?"
":m.tabReplace?n.replace(/\t/g,m.tabReplace):""}):e}function N(e){var n,t,r,a,i,c=function(e){var n,t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=l.exec(i))return S(t[1])?t[1]:"no-highlight";for(n=0,r=(i=i.split(/\s+/)).length;n/g,"\n"):n=e,i=n.textContent,r=c?x(c,i,!0):B(i),(t=g(n)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=r.value,r.value=d(t,g(a),i)),r.value=M(r.value),e.innerHTML=r.value,e.className=function(e,n,t){var r=n?u[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}(e.className,c,r.language),e.result={language:r.language,re:r.relevance},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.relevance}))}function h(){if(!h.called){h.called=!0;var e=document.querySelectorAll("pre code");f.forEach.call(e,N)}}function S(e){return e=(e||"").toLowerCase(),b[e]||b[u[e]]}function T(e){var n=S(e);return n&&!n.disableAutodetect}return a.highlight=x,a.highlightAuto=B,a.fixMarkup=M,a.highlightBlock=N,a.configure=function(e){m=s(m,e)},a.initHighlighting=h,a.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",h,!1),addEventListener("load",h,!1)},a.registerLanguage=function(n,e){var t=b[n]=e(a);v(t),t.rawDefinition=e.bind(null,a),t.aliases&&t.aliases.forEach(function(e){u[e]=n})},a.listLanguages=function(){return i(b)},a.getLanguage=S,a.autoDetection=T,a.inherit=s,a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",relevance:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},a.C=a.COMMENT=function(e,n,t){var r=a.inherit({cN:"comment",b:e,e:n,c:[]},t||{});return r.c.push(a.PWM),r.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,relevance:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,relevance:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,relevance:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,relevance:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,relevance:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,relevance:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,relevance:0},a});hljs.registerLanguage("cs",function(e){var a={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},i={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},c={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},r=e.inherit(c,{i:/\n/}),n={cN:"subst",b:"{",e:"}",k:a},t=e.inherit(n,{i:/\n/}),s={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,t]},l={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},n]},b=e.inherit(l,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},t]});n.c=[l,s,c,e.ASM,e.QSM,i,e.CBCM],t.c=[b,s,r,e.ASM,e.QSM,i,e.inherit(e.CBCM,{i:/\n/})];var o={v:[l,s,c,e.ASM,e.QSM]},d=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],k:a,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",relevance:0},{b:"\x3c!--|--\x3e"},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},o,i,{bK:"class interface",e:/[{;=]/,i:/[^\s:,]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",relevance:0},{cN:"function",b:"("+d+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/\s*[{;=]/,eE:!0,k:a,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],relevance:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:a,relevance:0,c:[o,i,e.CBCM]},e.CLCM,e.CBCM]}]}}); \ No newline at end of file diff --git a/themes/hugo-theme-learn/static/css/hugo-theme.css b/themes/hugo-theme-learn/static/css/hugo-theme.css index 741cab1..95ace51 100644 --- a/themes/hugo-theme-learn/static/css/hugo-theme.css +++ b/themes/hugo-theme-learn/static/css/hugo-theme.css @@ -250,5 +250,5 @@ figcaption h4 { } .is-sticky #top-bar { - box-shadow: -1px 2px 5px 1px rgba(0, 0, 0, 0.1); -} \ No newline at end of file + box-shadow: -1px 2px 5px 1px rgba(0, 0, 0, 0.1); +} diff --git a/themes/hugo-theme-learn/static/css/theme.css b/themes/hugo-theme-learn/static/css/theme.css index 2e1f65e..3379b1d 100644 --- a/themes/hugo-theme-learn/static/css/theme.css +++ b/themes/hugo-theme-learn/static/css/theme.css @@ -26,6 +26,20 @@ font-style: normal; font-weight: 200; } +@font-face { + font-family: 'Public Sans'; + src: url("../fonts/publicsans-regular-webfont.woff") format("woff"); + src: url("../fonts/publicsans-regular-webfont.woff2") format("woff2"); + font-style: normal; + font-weight: 400; +} +@font-face { + font-family: 'Public Sans'; + src: url("../fonts/publicsans-light-webfont.woff") format("woff"); + src: url("../fonts/publicsans-light-webfont.woff2") format("woff2"); + font-style: normal; + font-weight: 300; +} @font-face { font-family: 'Work Sans'; font-style: normal; @@ -448,10 +462,10 @@ textarea:focus, input[type="email"]:focus, input[type="number"]:focus, input[typ margin: 0; } body { - font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; + font-family: "Public Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; font-weight: 300; line-height: 1.6; - font-size: 18px !important; + font-size: 16px !important; } h2, h3, h4, h5, h6 { font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; diff --git a/themes/hugo-theme-learn/static/fonts/publicsans-light-webfont.woff b/themes/hugo-theme-learn/static/fonts/publicsans-light-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..4dff0ea6ca28999b7093a0b9828ce1f6986951f8 GIT binary patch literal 28164 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 literal 0 HcmV?d00001 diff --git a/themes/hugo-theme-learn/static/fonts/publicsans-regular-webfont.woff2 b/themes/hugo-theme-learn/static/fonts/publicsans-regular-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..19bddb6300b012cba188e3e157885082cbdda8d1 GIT binary patch literal 21504 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%0DtDbh>=E=U$AHoS+oPo_8w&(Aok zm>IlqETX6cWFiR=5c`8qfA^J`#^h(51@jsSiy)iZ;$;hwGi7VlWz8=_X7_u6NeSZ4 zCN29B2b@`@ScXhn~dS_>>4jNQfV0}R~(D-u4GT0fRtW7Nh`?77(W*% z>U{jfKD@BBdxaAJ<+-wr}dd^E5@Fqu_~jsgdZMKjvS*pWTp5Nspv zD1u@@&M)U_GU%kgB*>i2sTBtHv&;0^)~UAx*afHb)+|saF&8c8J_&NJKjj~_5(3qh zM2qy3s97alJ8Snkmvit{`Ht@CZt%4H88u&=_$u!V zId|o>+-bYPsw>j#tG6UH;CJL7tgR^I3cv@Z--@^#V2r&To+<4U;A&{SpAxvWYZ-MGyDY%TXZ>0urMl|iGSQ@=IA%rT1Fyl(qrSoNVQ87QsWFDt_d)_Y+zV^)pQd%1IEh4|g|81^MJm!8A&AES&49M8ZF8!99o(TH|b!B*n zyL9IKR{FZ60_U9!5TItnWM_+bt2qFJzH7vUfFB+(AovN;CMG*9^0(13konVR0s!t8 z27#UI6L2^Pl5rB+0Yd`i&PzS2!~>SQ7(rzR2nhqE7Sa0fXpZ8I7L*`PmJyd|?WDsg{b^5k{~Fz~QUm3n9{IF_8pfL-56V9OHv9rrLxg z%%$-Ij184@N+tmPe{7e#JNx?dL`LECF#7^n_M`*ar?2O;a8K1-D71cIf5eb~0b6>> zGmt6CZb@d(Fm<8Z|1x;&8UQb$BNGNG>{)?@3APYID%YO5&~>MO|L5Ll{u4^Oz2-W z6*h*R2%&jiTbGlmO$pcd=<^eB71PR|G*CV&f@j`j#MV{|E!Ns zLIx<&`az7RyIekzT~9VouX4udptQ#~P6nGixdf;9$!tN^Gw8Taq#}SjkqV9@I?<0t zDH1DWMml(|4uXVZ@H~qTd>FiBI*pMshDQQ+9*mvyT{&bVNes3$qCz5uvXgm`3&c6O zoEWp!LIgInX?-#vS-m$3;`dsA1{!>_>N{wcX3SP$OKQGqMByNXh+n1J0rFn5gT~i!eNi2- zY>RQ~9Nn!ukqf48RSSl~@zXJ}x+*4klM`OAGLEJwwgbjQ+5xf2G!-h-sXOH{Y==s$ zgnopN)5Q zb8mcWV>;%77qx0djB;ns3Dq`Ybz`Jp7Q7lsVr&S7JR?h`*&(LOg#erNjtrn~sBjg- zfKb*BSC5Azx;kRU=_w&nbLIsUxkPB4>L7|3Q*9_TVm61N@{Y-}unbJ4xQlG05=qw~ zw^E$aVEo2o&QraGTxJ9>*XO)5Y;~(dYs^-Vd`VQqQhrSgI&@VVr zt6jeQWh_>oe7Za0P(Z#&*$xZpq)UK0l9^KWNd|UWB+&{OOS6{Qa@7PaRgJk+1{*(9 zv5ZXC<(t_HDu-Sxqvw$luSUETWmSc*>oh0jtuyIWKQBpTwo?Rb0!a~t8Zjo00-|>( z2s2K?Y43$#@d%6A)z!`}a4ZyxJ=w5i8dAb&ELyU3bh)S3g=v!c(WY8u7+|yQpUkKwrUI~E$5}^NXqJ%*)7ojSN!bM3#$zMn; zM-MDoZ?Nb|2t%{UX#R!Noe&UOJCItdP9uyX$LRp0>H^pkH$DANyu3HGvN+l74Q1C!Wk}TTl=8QNzRv}vswyCAG zoQQ1mMMD}ZBr}D^+Jy}izf?x;oI*KXqrOBDGO;Zq`0D4C8Az98Hww&}j5984WURhEjM_U_dFFN+a_WB{FWDlS0*NgPeA#w;*|N#F z)N3u!Hn&HEYrh7US0sdij~C(YP`xu?)C1%}fU~SoA489Os;eHVOw2eUbNfcRC--b_ zEij%_^T1ZLaSvP;syO~S$&#$xdLjVBIu{BVgfgaGwafq|MBqm-f=d|43MdT~^kdw| z-^Ngifz>!Su+~a2_6P&r%{(RFseihy?>vMdklubUDBJ!&`rp6n1L`ItpTGyddhK82 z@oS>C+gqU_^(H={f;VYMdD8>29`+9yZxoboe;9~w-_PI71VZNyz8@mq{SxBprZioZ zH!EAssPd3ihLEj>faJ7(u*9oo&qxVq(;LdWo=nAHrT}EcXh}=LhY6hYrhszWP|Fx@ zXBhhT*J0hLgYy;vmNp1fUs|?ry;4 zIAEq~5ds;0qWQPU_!-1W9w}R7fRym=XAp~KODRCzxJp19ZPx{P+A51}X7mXmKEm9y zR=ts^!D<3hM~To-?I?1=0fH^MO~H;7qjjBgy#RS$xvT^IZrm1)UFRn| z7G@@0>VTGxfE4Y25x#)B}fv9=rq98h)*KepUQh-~wfNrR!T$<{XMvz$3MaUTZ zG@Tv<2+d+CkSQQdj*~@F3DHk1#y~TmD9FbI zrBt}`OTcI1D8@$XIb9BygAbg z6rQ1~v4c~rF}5y&4M9(VF{~R$Hu0Xx@aah&+q)8w6;9xhcbVaCy5v$Vdbbn{JYAigu`EcF zY+j=AI<2gmISJI|=?Uw}uH)u|kfddO7Zgjyj#^KpjYExQDP*YFW4c9lXq~Q^9)MPC z@o~t!Sjh6BcXl(ERjkKds2{t2(tkgFkNUQey|-m^TI<81S-7f3;LWB%I*Wa32Y4TC zM#r^U{l2hpfonqSxkFRTVl=}FrrLVqh@9uazk`t>`Eu?eL?u|3T#!=wV-NCSZ^-Nub5Q>2ovPaaiBUz)04q+D9yy<3CGxS(K?uOIGZ&FBHnU6{zilyWCiksXAE zIk%5-+?hyV)YNg1?wm`EYgzUuVGpMFZ_>PZpQEA7lY}lDN(D2oF5aI*eXK-7Ke zVy1g2Rc*Mjl|}vK#?Y5suwNDB<;~cALz?j2p6B`9Pi#DMqvDMzx9+lk{483dT=D$n zqMAc0-wjhgq6v=8S3+x^hfxg%vT&8*QQ9dF+a;?8-C&c$)#1-lm0B@|R*Tg*UPrs= zbmiogQ`puGq-S~9_9pgPo1{KGE=hvKU2a-gafJCY%Etm{>@z6aUCA!B5@$DkOK}$o z@Z5Ii+`ddAXi}!PZpLROw*vP7KcNFc91U4u5LMi3HuXGdTK{}nB*EAG)G^CIPwRY9 z?=hFR69?wA1Wy^gGPGe_k^10oI58}a3_CZ!Wb6}TU%kB67mOP$Dr&ZhhW?1{ zBc-Ypz=v!WX+aBNetM$FK_xs0=1!^5im;>02#aUTzJ95iD)#6I*MK83bXUdDr8!sJ zLUvVG!4(OqRWaxhxx7Urc^iu zEt$bYXeM#s(q?NGcCy(yKIxCSD@hLvrSnbl*dSgU6poc{(psfa3zmw z#bq^_2{VfunG=P8ne;9|$oVT)BmtErRkTtE$L{z5fR5@LJ~AK1 zGS$v9+{V$GP8fcjf4-h6<}D^s>>Ri_-c{JV!2oS$C8LHs)K#0t_3N931U;6xj!){D zy(Ri92*3Lge|_%-Jm0Is8lY&#r7iK2R^UC_k>z;2Pw9pIv1Wlkd-nXj&wk>1%M2;@ z(g-!6Uz!aXQJ2blAnf1`eKZ?~uXE8|T_fH->o@f|b4D6-JFN-2Iz5qXl?X#&7EU%6 z3l=#NY#qcCUUBHBW*LM#n9PI3itx4aTW{E~tmIT|aI zC>l1>A-HcG`EU^pbM2dC=LUYIxR?Vn=^=vU~tANgP^2UY<4|DA(lcBCIEdr(Y zWGJ*sp-S3Ns325m_mG7J$GZ5exGG^W*~jRLK>U|!L$q?xSM!jmVQZ>+dsa9TM*(cK zX9Q;1K9&vluqSvIhO)k~cW}9k@p?@s@%JM!kad@b_Dy%O>GSomBH;M{Ls!dfskxkQ zc)DV}Zlp=RVBAE0iZScvroDLJAOH(~Izab7#~@8iv29u43W+~OnAQS0v>M0W#pzun zBKATfFp)F%3iIKrycOA=D|p%m6ZYA?dF6@p^YF&p)9p8)NfR8(OU3$i?3RzXCyU08dlYSLKnnp(vI zCKcFu*)G@}G5;xvAabfzH015zmn*%xo8b3Z`_O=zd%78^XgU5L&El+6s$F~EL6U^Gc6hi9TZ5#0DlCem%)XUM#^s$r<&qH$^tWmwNv*#a7GT_Md2;uSj3+ z17CRh0-R#pw{AXa9Cz3Ze0)8f0Ur+ZA;Aac>o525*R-Tck4|oWuInKmrcaZ$kFIat z1_E&uvTT353;JY=ulukJq8ze?O`ppN?$ zY%2o0&UHBbO}xM+8h7O=;M%+CjKfF#T)TI0gz;-WKc3TL*|DJvh6~u|C%I-nS{k@_fIi?r{LA(#CuDI-hwcPrDZP5u7%C zr%`Qgm+@c*oPh`2f2lp(;nOKYimTEY8HdWra4DmRdUsk99=aUyQ7^Fc^oMLd66 zcw2N7MBD#i-J`hifXC4Tyji#BR&pz+@Dbmii1t=`K&7g;6yxjd-LjP=z`j83GrU*s z?*4r{;5bs7!bMZhesL=rAKdmMf)vOV-qp^s@Vle&bwf_PtmlISFTVK~5V5T7$6=70 z!TLCgbzjv)lTeyi4e%l%iRX&y82ASi5Z&|JgzNH;oJ7dUDxzUxLguuTh=2tU@g zI3k@6qbdm_cA*GWV|{O`OWZZK<(LG77|&4Q%F(h8?(FWb6Gcs26NmBe6o!-*n8*5_ zJ}H(KCiW3S@2-i52mDNKYyk?|(w?5<(p3wo1meNn!@_Mn(+&?2=DxYvb#1lBGhlhC zS%?+-=o<^a{G`H-abFe2@q(P{C3twzWY>{DULT= ze;hneOEVWS>zwjYv?ZOJ5ou#@Mxc$)i6$KqL1?+S5)Yt$t5pVr9(RsT!*h+yx3wC> z{Y|~M@EZpc*UQ3f4JDJg9WIaLIQ6tEiC@PT))=B2Hcv*f9X+elXyrQ5*eCHe+lZ=N z0!nB^F?F`NJ;VAsr>#SK7SY7&w3hT>SYlS#-ek82V-ZSaNpBHlHka{z5rLx~8OaIB$l-BD!3&&1Twu%KBJ5;27!gWK zmVNL=g~GH=QfWKUS{Zx6((=d#w!ZP~ix#Wtz!sakzVi&6EdYJm0Yf$>z%V~CA33N=*RwHr&bFPXcc~y@k$K zsZTY%JLTYg+qkLs20dX!lxh|EQ&wN79d%r#s}rf-EmWGLJ*KU>?c6l0t7H30YbF<4 zWyIrD*D%dg^3((R2*IpdOAbtBo5XeN``&N(|nOG=;(IKm%>zPq4kXtBvX(MP+Uq@SozIQ zTjzm*jX$(Vi)yi~hprWtZ~5yPA;P9?)MLAW<=CXabL@_52hGR^*B$$b65tk2bo_)nj>a}&@%AGr_ zLg%T~j7xZCOFF^3gF&w3c`H0+6t%R7F8ZjDIXaA9ps0LhFw(?X(ktY%!1e?r<^lKn zc?x?6|A8YmkM z$@h3?dMF&b0tas{qcp}T6fv*py4(e}<7eR0-V;=_!zulNGq%d5PGj+*V4(Xg)jmwl z-&K?=xJ1Qcyw_(_7aA)lhiHGTQKeIAG8?*!-92>ZfZH+3ZNQO-J;!jQ;Z$~5wiwxW z>k0-u-XQPb&TeG9@KXF)hXA`@W+loA^6OG;cRrk=Vv?Gk*w}x3z;~Fw7S# zTa{>o1Z%dyk3_5k7q<4gg~j)nvj@?XmWz_LF0>6;)ahunlV+O-lg|XUK+{U3({GnG zpvmYD63o#)f39EIpw{2wTbp0!^f37UzSeMH6E&s z$Gq{41XFaa|DaWKa8+;kPQ6i;_9-icb2Xiw@}v781Ct==qB#BPMtc1teT~r$vEAB1 zQ#zY8fY4HgATZF&djF2ioOjw1BZp+6BxrFbig3S2euk)4{=4Us$Rll4g0@doUw%IY z8Co2H$wm5#v5$-xUAr53J44GFT;-~S`U|v^x^2R40q8HF)lWn5FVH0bYC#4SaND)eM;s#}{oht%- zrG(h{YWqzX4-i_)e=vvl2`EhfBH+vr&sc^D#-jOzprwonF2O2C9Bxn7vi!(Tg3STxQ_6L)y>*u-7+^UlOQmi!al-_xX@)LRwsHJ2WS zsP#Me$XS{}AQHXsUu-L;9eG^H65xV~70!_6g_vBuQjFkz~K-Y_&mJ9kQMFYjE3sI1F;k&Dq< z3HAfGEG|d$xja=t?uoHKcrj%bnf%HCCAoyOb3Trxf;x32l43$CZ?oX)BZVqQiNtQ4 zBtkqxTu5{9L5{i7i2kqT2mw^Sxn;ntt7(k4_TI1U$@PF|8M!upe2EFp+3@e(ASZjfJBy}D-_YIM+>tbTgUG}l5) zt+dugTkRxE(O#-F=_hbhneo%q%7w&}rg+aUpZSR&AUz1(rn zV-Gy^$X9xM?un-k3-P0+w!QFDU*Gu7Tw(edV32_Z+alUfRgf8OOeCx#@&q zOJ?f|F_+B7nebT4x;wyvEFu8tP(G4X$8Z2#F9B=uZqi?$NZa)wX7{A`zkwhqSFN zTx;_>5dGma$3XwGl>M{!`*wO36NrKrk2EB(r3g zdycYWGn$-7bm~64`vUU4bPix|?tt$hFQ#IeGSX!L79+WP!u-V@sI)Y{gWj($fZ4Bm r!0tCq;PzVqzuz@LvEN%L_ZNV$zpRJ2Kh#0BFE$VHj7b#xOFrENyBKeN literal 0 HcmV?d00001