From 52d2d89cb6c23be4af3586deefceda82e85089f6 Mon Sep 17 00:00:00 2001 From: SGavrl <277843151+SGavrl@users.noreply.github.com> Date: Thu, 30 Jul 2026 23:27:51 +0000 Subject: [PATCH] Honor variable font instances --- Cargo.lock | 2 - Cargo.toml | 3 + crates/obscura-render/Cargo.toml | 4 +- crates/obscura-render/src/dom.rs | 97 + crates/obscura-render/src/inline.rs | 469 +++- crates/obscura-render/src/lib.rs | 27 + crates/obscura-render/src/style.rs | 299 +++ vendor/cosmic-text/Cargo.toml | 187 ++ vendor/cosmic-text/Cargo.toml.orig | 84 + vendor/cosmic-text/LICENSE-APACHE | 201 ++ vendor/cosmic-text/LICENSE-MIT | 21 + vendor/cosmic-text/README.md | 94 + vendor/cosmic-text/fonts/NotoSans-LICENSE | 93 + vendor/cosmic-text/fonts/NotoSans-Regular.ttf | Bin 0 -> 556216 bytes vendor/cosmic-text/fonts/NotoSansArabic.ttf | Bin 0 -> 765740 bytes vendor/cosmic-text/fonts/NotoSansHebrew.ttf | Bin 0 -> 183688 bytes vendor/cosmic-text/src/attrs.rs | 694 ++++++ vendor/cosmic-text/src/bidi_para.rs | 40 + vendor/cosmic-text/src/buffer.rs | 1485 +++++++++++++ vendor/cosmic-text/src/buffer_line.rs | 310 +++ vendor/cosmic-text/src/cached.rs | 81 + vendor/cosmic-text/src/cursor.rs | 156 ++ vendor/cosmic-text/src/edit/editor.rs | 922 ++++++++ vendor/cosmic-text/src/edit/mod.rs | 366 +++ vendor/cosmic-text/src/edit/syntect.rs | 463 ++++ vendor/cosmic-text/src/edit/vi.rs | 1173 ++++++++++ vendor/cosmic-text/src/font/fallback/macos.rs | 110 + vendor/cosmic-text/src/font/fallback/mod.rs | 480 ++++ vendor/cosmic-text/src/font/fallback/other.rs | 42 + vendor/cosmic-text/src/font/fallback/unix.rs | 129 ++ .../cosmic-text/src/font/fallback/windows.rs | 98 + vendor/cosmic-text/src/font/mod.rs | 218 ++ vendor/cosmic-text/src/font/system.rs | 407 ++++ vendor/cosmic-text/src/glyph_cache.rs | 162 ++ vendor/cosmic-text/src/layout.rs | 148 ++ vendor/cosmic-text/src/lib.rs | 150 ++ vendor/cosmic-text/src/line_ending.rs | 98 + vendor/cosmic-text/src/math.rs | 20 + vendor/cosmic-text/src/shape.rs | 1953 +++++++++++++++++ vendor/cosmic-text/src/shape_run_cache.rs | 49 + vendor/cosmic-text/src/swash.rs | 214 ++ 41 files changed, 11484 insertions(+), 65 deletions(-) create mode 100644 vendor/cosmic-text/Cargo.toml create mode 100644 vendor/cosmic-text/Cargo.toml.orig create mode 100644 vendor/cosmic-text/LICENSE-APACHE create mode 100644 vendor/cosmic-text/LICENSE-MIT create mode 100644 vendor/cosmic-text/README.md create mode 100644 vendor/cosmic-text/fonts/NotoSans-LICENSE create mode 100644 vendor/cosmic-text/fonts/NotoSans-Regular.ttf create mode 100644 vendor/cosmic-text/fonts/NotoSansArabic.ttf create mode 100644 vendor/cosmic-text/fonts/NotoSansHebrew.ttf create mode 100644 vendor/cosmic-text/src/attrs.rs create mode 100644 vendor/cosmic-text/src/bidi_para.rs create mode 100644 vendor/cosmic-text/src/buffer.rs create mode 100644 vendor/cosmic-text/src/buffer_line.rs create mode 100644 vendor/cosmic-text/src/cached.rs create mode 100644 vendor/cosmic-text/src/cursor.rs create mode 100644 vendor/cosmic-text/src/edit/editor.rs create mode 100644 vendor/cosmic-text/src/edit/mod.rs create mode 100644 vendor/cosmic-text/src/edit/syntect.rs create mode 100644 vendor/cosmic-text/src/edit/vi.rs create mode 100644 vendor/cosmic-text/src/font/fallback/macos.rs create mode 100644 vendor/cosmic-text/src/font/fallback/mod.rs create mode 100644 vendor/cosmic-text/src/font/fallback/other.rs create mode 100644 vendor/cosmic-text/src/font/fallback/unix.rs create mode 100644 vendor/cosmic-text/src/font/fallback/windows.rs create mode 100644 vendor/cosmic-text/src/font/mod.rs create mode 100644 vendor/cosmic-text/src/font/system.rs create mode 100644 vendor/cosmic-text/src/glyph_cache.rs create mode 100644 vendor/cosmic-text/src/layout.rs create mode 100644 vendor/cosmic-text/src/lib.rs create mode 100644 vendor/cosmic-text/src/line_ending.rs create mode 100644 vendor/cosmic-text/src/math.rs create mode 100644 vendor/cosmic-text/src/shape.rs create mode 100644 vendor/cosmic-text/src/shape_run_cache.rs create mode 100644 vendor/cosmic-text/src/swash.rs diff --git a/Cargo.lock b/Cargo.lock index 91ebe82..8dbaac1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -584,8 +584,6 @@ dependencies = [ [[package]] name = "cosmic-text" version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8" dependencies = [ "bitflags", "fontdb 0.16.2", diff --git a/Cargo.toml b/Cargo.toml index 3cfad81..b3d903e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,6 +59,9 @@ base64 = "0.22" [patch.crates-io] # Keep the grid shrink-to-fit correction local until it lands upstream. taffy = { path = "vendor/taffy" } +# Carry the same canonical variable-font coordinates through shaping and +# rasterization until the upstream API exposes them. +cosmic-text = { path = "vendor/cosmic-text" } # Unwinding (the Rust default) is REQUIRED for the anti-panic protocol: ops wrap # their bodies in std::panic::catch_unwind so a panic degrades to an error return diff --git a/crates/obscura-render/Cargo.toml b/crates/obscura-render/Cargo.toml index 21ffbca..77d66b1 100644 --- a/crates/obscura-render/Cargo.toml +++ b/crates/obscura-render/Cargo.toml @@ -23,8 +23,8 @@ ab_glyph = { workspace = true, optional = true } # fonts (no system-font scan) so layout stays deterministic across hosts. cosmic-text = { version = "=0.14.2", default-features = false, features = ["std", "swash"], optional = true } # Keep this exactly aligned with cosmic-text 0.14's raster backend. Cosmic -# does not expose variation coordinates, so variable font instances are -# rasterized through Swash directly while Cosmic remains the shaper. +# and the renderer consume the same canonical variation coordinates for +# shaping and rasterization. swash = { version = "=0.2.0", default-features = false, features = ["std", "scale", "render"], optional = true } image = { version = "0.25", default-features = false, features = ["jpeg", "png", "webp"], optional = true } ureq = { version = "2.9", default-features = false, features = ["tls"], optional = true } diff --git a/crates/obscura-render/src/dom.rs b/crates/obscura-render/src/dom.rs index 0394078..6cbc723 100644 --- a/crates/obscura-render/src/dom.rs +++ b/crates/obscura-render/src/dom.rs @@ -1076,6 +1076,8 @@ pub(crate) fn layout_dom_with_web_fonts( font_size: Option, font_weight: u16, font_family: Option, + font_optical_sizing: crate::FontOpticalSizing, + font_variation_settings: Vec, letter_spacing: f32, letter_spacing_non_normal: bool, container_type: crate::ContainerType, @@ -1110,6 +1112,8 @@ pub(crate) fn layout_dom_with_web_fonts( font_size: None, font_weight: 400, font_family: None, + font_optical_sizing: crate::FontOpticalSizing::Auto, + font_variation_settings: Vec::new(), letter_spacing: 0.0, letter_spacing_non_normal: false, container_type: crate::ContainerType::Normal, @@ -1410,6 +1414,17 @@ pub(crate) fn layout_dom_with_web_fonts( style.font_weight = Some(computed_weight.to_string()); inh.font_weight = computed_weight; match &style.font_family { Some(f) => inh.font_family = Some(f.clone()), None => style.font_family = inh.font_family.clone() } + match style.font_optical_sizing { + Some(value) => inh.font_optical_sizing = value, + None => style.font_optical_sizing = Some(inh.font_optical_sizing), + } + match &style.font_variation_settings { + Some(settings) => inh.font_variation_settings.clone_from(settings), + None => { + style.font_variation_settings = + Some(inh.font_variation_settings.clone()) + } + } let is_table = tree .get_node(id) .map_or(false, |node| { @@ -1566,6 +1581,8 @@ pub(crate) fn layout_dom_with_web_fonts( style.letter_spacing_non_normal.unwrap_or(false); let host_weight = crate::style::used_font_weight(style); let host_family = style.font_family.clone(); + let host_optical_sizing = style.font_optical_sizing; + let host_variation_settings = style.font_variation_settings.clone(); let host_line_height = style.line_height; let host_transform = style.text_transform; let host_italic = style.font_style_italic; @@ -1711,6 +1728,13 @@ pub(crate) fn layout_dom_with_web_fonts( if pseudo.font_family.is_none() { pseudo.font_family = host_family.clone(); } + if pseudo.font_optical_sizing.is_none() { + pseudo.font_optical_sizing = host_optical_sizing; + } + if pseudo.font_variation_settings.is_none() { + pseudo.font_variation_settings = + host_variation_settings.clone(); + } if let Some(expression) = pseudo.line_height_expression.as_deref() { if let Some(resolved) = crate::style::resolve_contextual_length( expression, @@ -7334,6 +7358,79 @@ mod tests { assert_eq!(pseudo.line_height, host.line_height); } + #[test] + fn variable_font_properties_inherit_and_reset_through_elements_and_pseudos() { + let tree = parse_html( + r#" +
+ + +
"#, + ); + let laid = layout_dom(&tree, (1280.0, 720.0)); + let get = |selector: &str| { + let id = tree.query_selector(selector).unwrap().unwrap(); + &laid.styles[&id] + }; + let parent = get("#parent"); + let inherited = get("#inherited"); + assert_eq!( + parent.font_optical_sizing, + Some(crate::FontOpticalSizing::None) + ); + assert_eq!(inherited.font_optical_sizing, parent.font_optical_sizing); + assert_eq!( + inherited.font_variation_settings, + parent.font_variation_settings + ); + let before = parent.before_pseudo.as_ref().unwrap(); + assert_eq!(before.font_optical_sizing, parent.font_optical_sizing); + assert_eq!( + before.font_variation_settings, + parent.font_variation_settings + ); + + let reset = get("#reset"); + let reset_child = get("#reset-child"); + assert_eq!( + reset.font_optical_sizing, + Some(crate::FontOpticalSizing::Auto) + ); + assert_eq!(reset.font_variation_settings, Some(Vec::new())); + assert_eq!(reset_child.font_optical_sizing, reset.font_optical_sizing); + assert_eq!( + reset_child.font_variation_settings, + reset.font_variation_settings + ); + let after = reset.after_pseudo.as_ref().unwrap(); + assert_eq!(after.font_optical_sizing, reset.font_optical_sizing); + assert_eq!( + after.font_variation_settings.as_deref(), + Some( + [crate::FontVariationSetting { + tag: *b"wght", + value: 300.0, + }] + .as_slice() + ) + ); + } + #[test] fn native_select_sizes_for_its_widest_option() { let tree = parse_html( diff --git a/crates/obscura-render/src/inline.rs b/crates/obscura-render/src/inline.rs index d2c0bd5..4d47cee 100644 --- a/crates/obscura-render/src/inline.rs +++ b/crates/obscura-render/src/inline.rs @@ -16,7 +16,8 @@ use std::{collections::HashMap, sync::Arc}; use cosmic_text::{ Align, Attrs, Buffer, CacheKey, CacheKeyFlags, Color, Family, FeatureTag, FontFeatures, - FontSystem, Metrics, Shaping, Style, SwashCache, SwashImage, Weight, Wrap, + FontSystem, FontVariations, Metrics, Shaping, Style, SwashCache, SwashImage, VariationTag, + Weight, Wrap, }; use swash::scale::{image::Content as SwashContent, Render, ScaleContext, Source, StrikeWith}; use swash::zeno::{Angle, Format, Transform, Vector}; @@ -91,19 +92,23 @@ struct LoadedFamily { #[derive(Clone)] struct LoadedFace { name: Arc, + font_id: Option, min_weight: u16, max_weight: u16, shape_weight: u16, italic: bool, + has_optical_size: bool, } #[derive(Clone)] struct ResolvedFont { family: Arc, + font_id: Option, shape_weight: u16, - /// Authored `wght` coordinate for a ranged @font-face. Cosmic Text 0.12 - /// cannot carry this into shaping, so it is kept separately for raster. + /// Authored `wght` coordinate for a ranged `@font-face`, retained while + /// descriptor selection is converted into the canonical axis tuple. variation_weight: Option, + has_optical_size: bool, } #[derive(Clone)] @@ -142,19 +147,18 @@ fn resolve_loaded_font( .copied() .find(|face| (face.min_weight..=face.max_weight).contains(&requested_weight)) { - // cosmic-text 0.12 only accepts the named family when the - // shaping weight exactly matches fontdb's weight for that - // file. A variable face commonly advertises `100 900` in - // CSS while fontdb records its default instance as 400. - // Passing the authored weight makes cosmic-text reject the - // right family and fall through to an unrelated exact- - // weight face. Select the file at its database weight; - // variable-axis shaping is not exposed by this version. + // The named-family matcher uses fontdb's default weight for + // this resource, while a variable face commonly advertises + // `100 900` in CSS. Preserve the descriptor-selected file + // and its database weight; the authored coordinate enters + // the canonical axis tuple below. return ResolvedFont { family: Arc::clone(&face.name), + font_id: face.font_id, shape_weight: face.shape_weight, variation_weight: (face.min_weight != face.max_weight) .then_some(requested_weight), + has_optical_size: face.has_optical_size, }; } let available: Vec<_> = @@ -166,8 +170,10 @@ fn resolve_loaded_font( { return ResolvedFont { family: Arc::clone(&face.name), + font_id: face.font_id, shape_weight: face.shape_weight, variation_weight: None, + has_optical_size: face.has_optical_size, }; } } @@ -177,8 +183,10 @@ fn resolve_loaded_font( let weights: &[u16] = &[400, 700]; ResolvedFont { family: Arc::from(fallback), + font_id: None, shape_weight: match_font_weight(requested_weight, weights), variation_weight: None, + has_optical_size: false, } } @@ -262,12 +270,15 @@ pub(crate) fn used_line_height(style: &LayoutStyle) -> f32 { } } -/// Per-glyph flags carried through cosmic-text's `metadata` field. Bit zero is -/// the underline flag; the remaining bits encode an optional one-based index -/// into an [`InlineItem`]'s clip-text fills. +type ClipTextFill = (f32, Vec<([u8; 4], Option)>); + +/// Per-glyph flags carried through cosmic-text's metadata. The common +/// non-variable path stays allocation-free: underline and fill remain packed +/// directly, while the upper half is a one-based index into an optional +/// variation-set table. const META_UNDERLINE: usize = 1; const META_FILL_SHIFT: usize = 1; -const META_VARIATION_BITS: usize = 10; +const META_VARIATION_BITS: usize = usize::BITS as usize / 2; const META_VARIATION_SHIFT: usize = usize::BITS as usize - META_VARIATION_BITS; const META_VARIATION_MASK: usize = ((1usize << META_VARIATION_BITS) - 1) << META_VARIATION_SHIFT; @@ -277,13 +288,10 @@ fn metadata_fill(metadata: usize) -> Option { ((metadata & META_FILL_MASK) >> META_FILL_SHIFT).checked_sub(1) } -fn metadata_variation_weight(metadata: usize) -> Option { - let weight = ((metadata & META_VARIATION_MASK) >> META_VARIATION_SHIFT) as u16; - (weight != 0).then_some(weight) +fn metadata_variation(metadata: usize) -> Option { + ((metadata & META_VARIATION_MASK) >> META_VARIATION_SHIFT).checked_sub(1) } -type ClipTextFill = (f32, Vec<([u8; 4], Option)>); - /// One inline formatting context: a shaped cosmic-text buffer plus where to /// paint it (filled in after layout). pub struct InlineItem { @@ -300,6 +308,9 @@ pub struct InlineItem { /// one entry, allowing an inline accent span to own a gradient without /// recoloring the rest of its heading. clip_fills: Vec, + /// Canonical axis tuples, populated only when this IFC actually contains + /// variable text. Glyph metadata stores a one-based index. + variation_sets: Vec>, } /// Owns the font set and shaping caches for one render pass, plus every @@ -314,15 +325,15 @@ pub struct TextEngine { replaced: Vec, } -#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] +#[derive(Clone, Debug, Eq, Hash, PartialEq)] struct VariableCacheKey { glyph: CacheKey, - weight: u16, + variations: Arc, } /// Swash's ordinary cache key intentionally has no variation coordinates. -/// Keep variable instances in a separate cache so a 400 glyph can never be -/// reused for 700 and repeated paint remains O(1) after the first raster. +/// Keep variable instances in a separate cache so different axis tuples can +/// never share an outline and repeated paint remains O(1) after first raster. struct VariableSwashCache { context: ScaleContext, images: HashMap>, @@ -340,22 +351,29 @@ impl VariableSwashCache { &mut self, font_system: &mut FontSystem, cache_key: CacheKey, - weight: u16, + variations: Arc, base: Color, mut f: F, ) { + let render_variations = Arc::clone(&variations); let key = VariableCacheKey { glyph: cache_key, - weight, + variations, }; let image = self.images.entry(key).or_insert_with(|| { let font = font_system.get_font(cache_key.font_id)?; + let settings = render_variations.iter().map(|variation| { + ( + swash::tag_from_bytes(variation.tag.as_bytes()), + variation.value.0, + ) + }); let mut scaler = self .context .builder(font.as_swash()) .size(f32::from_bits(cache_key.font_size_bits)) .hint(true) - .variations([("wght", weight as f32)]) + .variations(settings) .build(); let offset = Vector::new(cache_key.x_bin.as_float(), cache_key.y_bin.as_float()); Render::new(&[ @@ -623,6 +641,14 @@ impl TextEngine { let mut loaded_families = HashMap::new(); for (id, declared_family, declared_weight, declared_italic) in declarations { let Some(face) = db.face(id) else { continue }; + let has_optical_size = db + .with_face_data(id, |data, index| { + swash::FontRef::from_index(data, index as usize).map_or(false, |font| { + font.variations() + .any(|axis| axis.tag() == swash::tag_from_bytes(b"opsz")) + }) + }) + .unwrap_or(false); let names = face.families.clone(); let internal_name = names .first() @@ -641,10 +667,12 @@ impl TextEngine { .or_insert_with(|| LoadedFamily { faces: Vec::new() }); family.faces.push(LoadedFace { name: Arc::clone(&internal_name), + font_id: Some(id), min_weight: weight.0, max_weight: weight.1, shape_weight, italic, + has_optical_size, }); } } @@ -785,7 +813,8 @@ impl TextEngine { letter_spacing: context.letter_spacing, letter_spacing_non_normal: context.letter_spacing_non_normal, weight: context.weight, - variation_weight: context.variation_weight, + font_id: context.font_id, + variations: context.variations.clone(), italic: context.italic, underline: context.underline, color: context.color, @@ -859,10 +888,34 @@ impl TextEngine { // column overflows instead, matching normal `overflow-wrap: normal`. buffer.set_wrap(&mut self.font_system, Wrap::Word); // Always Advanced shaping: Basic mis-maps per-span attribute - // boundaries in cosmic-text 0.12 (a multi-color run like body text + // boundaries in the shaping backend (a multi-color run like body text // with links ends up coloring the wrong glyphs), and shaping is a // small fraction of a page's CSS-cascade-dominated render time. - let rich = spans.iter().map(|(t, a)| (t.as_str(), a.to_attrs())); + let mut variation_sets = Vec::>::new(); + for (_, attrs) in &spans { + if let Some(variations) = attrs.variations.as_ref() { + if !variation_sets + .iter() + .any(|existing| **existing == **variations) + { + variation_sets.push(Arc::clone(variations)); + } + } + } + let rich = spans.iter().map(|(text, attrs)| { + let variation_index = attrs + .variations + .as_ref() + .map(|variations| { + variation_sets + .iter() + .position(|existing| **existing == **variations) + .expect("collected span variation set") + + 1 + }) + .unwrap_or(0); + (text.as_str(), attrs.to_attrs(variation_index)) + }); let defaults = Attrs::new().family(Family::Name(FAMILY)); buffer.set_rich_text( &mut self.font_system, @@ -890,6 +943,7 @@ impl TextEngine { origin: (0.0, 0.0), clip: None, clip_fills, + variation_sets, }); Some(idx) } @@ -976,7 +1030,8 @@ struct SpanAttrs { letter_spacing: f32, letter_spacing_non_normal: bool, weight: u16, - variation_weight: Option, + font_id: Option, + variations: Option>, italic: bool, underline: bool, color: [u8; 4], @@ -985,7 +1040,7 @@ struct SpanAttrs { } impl SpanAttrs { - fn to_attrs(&self) -> Attrs<'_> { + fn to_attrs(&self, variation_index: usize) -> Attrs<'_> { let mut a = Attrs::new().family(Family::Name(self.family.as_ref())); // Inline descendants keep their own computed font metrics inside the // enclosing line box. Without per-span metrics, an ``/`` @@ -996,6 +1051,9 @@ impl SpanAttrs { self.line_height.max(1.0), )); a = a.weight(Weight(self.weight)); + if let Some(font_id) = self.font_id { + a = a.font_id(font_id); + } a = a.style(if self.italic { Style::Italic } else { Style::Normal }); if self.letter_spacing.is_finite() && self.letter_spacing != 0.0 { a = a.letter_spacing(self.letter_spacing / self.font_size.max(1.0)); @@ -1014,13 +1072,15 @@ impl SpanAttrs { // reaches paint; the real gradient is selected through metadata. let color = if self.clip_fill.is_some() { [255, 255, 255, 255] } else { self.color }; a = a.color(Color::rgba(color[0], color[1], color[2], color[3])); - // Underline, the optional fill index, and a variable `wght` coordinate - // share the per-glyph metadata. - let fill = self.clip_fill.map_or(0, |index| (index + 1) << META_FILL_SHIFT); + let fill = self + .clip_fill + .map_or(0, |index| (index + 1) << META_FILL_SHIFT); debug_assert_eq!(fill & !META_FILL_MASK, 0); - let variation = self - .variation_weight - .map_or(0, |weight| usize::from(weight.clamp(1, 1000)) << META_VARIATION_SHIFT); + let variation = variation_index << META_VARIATION_SHIFT; + assert_eq!(variation & !META_VARIATION_MASK, 0); + if let Some(variations) = self.variations.as_ref() { + a = a.font_variations((**variations).clone()); + } a = a.metadata(fill | variation | usize::from(self.underline)); a } @@ -1035,7 +1095,10 @@ struct SpanCtx { letter_spacing_non_normal: bool, color: [u8; 4], weight: u16, - variation_weight: Option, + font_id: Option, + variations: Option>, + variable_weight: bool, + has_optical_size: bool, italic: bool, underline: bool, transform: TextTransform, @@ -1061,6 +1124,32 @@ struct Collector { /// shape the glyphs in opaque white so their coverage renders, then recolor /// them from the background at paint time; otherwise transparent text stays /// transparent (and invisible), unchanged. +fn resolved_font_variations( + style: &LayoutStyle, + font: &ResolvedFont, +) -> Option> { + let mut variations = FontVariations::new(); + if let Some(weight) = font.variation_weight { + variations.set(VariationTag::new(b"wght"), weight as f32); + } + if font.has_optical_size + && style.font_optical_sizing.unwrap_or(crate::FontOpticalSizing::Auto) + == crate::FontOpticalSizing::Auto + { + let optical_size = style.font_size.unwrap_or(16.0); + if optical_size.is_finite() { + variations.set(VariationTag::new(b"opsz"), optical_size); + } + } + // Low-level CSS axes override the corresponding high-level coordinates. + for setting in style.font_variation_settings.as_deref().unwrap_or(&[]) { + if setting.value.is_finite() { + variations.set(VariationTag::new(&setting.tag), setting.value); + } + } + (!variations.is_empty()).then(|| Arc::new(variations)) +} + fn base_span_ctx( base: &LayoutStyle, font: ResolvedFont, @@ -1071,6 +1160,7 @@ fn base_span_ctx( collector.clip_fills.push(fill); index }); + let variations = resolved_font_variations(base, &font); SpanCtx { font_size: base.font_size.unwrap_or(16.0), line_height: used_line_height(base), @@ -1078,7 +1168,10 @@ fn base_span_ctx( letter_spacing_non_normal: base.letter_spacing_non_normal.unwrap_or(false), color: base.color.unwrap_or([0, 0, 0, 255]), weight: font.shape_weight, - variation_weight: font.variation_weight, + font_id: font.font_id, + variations, + variable_weight: font.variation_weight.is_some(), + has_optical_size: font.has_optical_size, italic: base.font_style_italic.unwrap_or(false), underline: base.underline.unwrap_or(false), transform: base.text_transform.unwrap_or(TextTransform::None), @@ -1131,7 +1224,8 @@ fn collect_node_spans( letter_spacing: ctx.letter_spacing, letter_spacing_non_normal: ctx.letter_spacing_non_normal, weight: ctx.weight, - variation_weight: ctx.variation_weight, + font_id: ctx.font_id, + variations: ctx.variations.clone(), italic: ctx.italic, underline: ctx.underline, color: ctx.color, @@ -1153,7 +1247,8 @@ fn collect_node_spans( letter_spacing: ctx.letter_spacing, letter_spacing_non_normal: ctx.letter_spacing_non_normal, weight: ctx.weight, - variation_weight: ctx.variation_weight, + font_id: ctx.font_id, + variations: ctx.variations.clone(), italic: ctx.italic, underline: ctx.underline, color: ctx.color, @@ -1192,15 +1287,20 @@ fn collect_node_spans( }) .unwrap_or_else(|| ResolvedFont { family: Arc::clone(&ctx.family), - shape_weight: if ctx.variation_weight.is_some() { + font_id: ctx.font_id, + shape_weight: if ctx.variable_weight { ctx.weight } else { requested_weight }, variation_weight: ctx - .variation_weight - .map(|_| requested_weight.clamp(1, 1000)), + .variable_weight + .then_some(requested_weight.clamp(1, 1000)), + has_optical_size: ctx.has_optical_size, }); + let variations = style + .map(|style| resolved_font_variations(style, &font)) + .unwrap_or_else(|| ctx.variations.clone()); let child = SpanCtx { font_size: style .and_then(|style| style.font_size) @@ -1216,7 +1316,10 @@ fn collect_node_spans( .unwrap_or(ctx.letter_spacing_non_normal), color, weight: font.shape_weight, - variation_weight: font.variation_weight, + font_id: font.font_id, + variations, + variable_weight: font.variation_weight.is_some(), + has_optical_size: font.has_optical_size, italic: ctx.italic || style.and_then(|s| s.font_style_italic).unwrap_or(false), // Underline propagates in: an ancestor's underline covers // descendant text; an element only sets its own via CSS. @@ -1606,11 +1709,14 @@ impl TextEngine { pixels[idx] = tiny_skia::PremultipliedColorU8::from_rgba(out_r as u8, out_g as u8, out_b as u8, out_a as u8) .unwrap_or(dst); }; - if let Some(weight) = metadata_variation_weight(glyph.metadata) { + if let Some(variations) = metadata_variation(glyph.metadata) + .and_then(|index| item.variation_sets.get(index)) + .map(Arc::clone) + { variable_swash.with_pixels( font_system, physical.cache_key, - weight, + variations, glyph_color, &mut draw_pixel, ); @@ -1791,24 +1897,30 @@ mod tests { faces: vec![ LoadedFace { name: Arc::from("Poppins"), + font_id: None, min_weight: 400, max_weight: 400, shape_weight: 400, italic: false, + has_optical_size: false, }, LoadedFace { name: Arc::from("Poppins Medium"), + font_id: None, min_weight: 500, max_weight: 500, shape_weight: 500, italic: false, + has_optical_size: false, }, LoadedFace { name: Arc::from("Poppins"), + font_id: None, min_weight: 700, max_weight: 700, shape_weight: 700, italic: false, + has_optical_size: false, }, ], }; @@ -1840,10 +1952,12 @@ mod tests { LoadedFamily { faces: vec![LoadedFace { name: Arc::from(FAMILY), + font_id: None, min_weight: 100, max_weight: 900, shape_weight: 400, italic: false, + has_optical_size: false, }], }, ); @@ -1865,6 +1979,79 @@ mod tests { assert_eq!(face.weight.0, 400); } + #[test] + fn descriptor_selected_resource_pins_the_exact_font_face() { + let data = SANS_R.to_vec(); + let mut engine = TextEngine::new_with_web_fonts(&[ + WebFont { + data: data.clone(), + family: Some("Pinned Variable".to_string()), + weight: Some((100, 400)), + italic: Some(false), + }, + WebFont { + data, + family: Some("Pinned Variable".to_string()), + weight: Some((500, 900)), + italic: Some(false), + }, + ]); + let loaded = &engine.loaded_families["pinned variable"]; + assert_eq!(loaded.faces.len(), 2); + let first_id = loaded.faces[0].font_id.unwrap(); + let selected = resolve_loaded_font( + Some("Pinned Variable"), + 700, + false, + &engine.loaded_families, + ); + let selected_id = selected.font_id.unwrap(); + assert_ne!( + first_id, selected_id, + "the fixture must contain two distinct database resources" + ); + let selected_font = engine + .font_system + .get_font(selected_id) + .expect("the descriptor-selected database face must be loadable"); + assert_eq!(selected_font.id(), selected_id); + + let tree = obscura_dom::parse_html( + "

Build whatever you want, without touching your CSS file.

", + ); + let copy = tree.get_element_by_id("copy").unwrap(); + let style = LayoutStyle { + display: Display::Block, + font_family: Some("Pinned Variable".to_string()), + font_weight: Some("700".to_string()), + font_size: Some(32.0), + ..Default::default() + }; + let item = engine + .try_build(&tree, copy, &HashMap::from([(copy, style)])) + .unwrap(); + assert_eq!( + engine.items[item].buffer.lines[0] + .attrs_list() + .get_span(0) + .font_id_opt, + Some(selected_id), + "the resolved face must survive rich-text span construction" + ); + engine.measure(item, None); + let shaped_id = engine.items[item] + .buffer + .layout_runs() + .next() + .and_then(|run| run.glyphs.first()) + .map(|glyph| glyph.font_id) + .unwrap(); + assert_eq!( + shaped_id, selected_id, + "family/default-weight rematching must not replace the descriptor-selected resource" + ); + } + #[test] fn ranged_face_preserves_requested_weight_for_variable_raster() { let loaded = HashMap::from([( @@ -1872,10 +2059,12 @@ mod tests { LoadedFamily { faces: vec![LoadedFace { name: Arc::from("Inter"), + font_id: None, min_weight: 100, max_weight: 900, shape_weight: 400, italic: false, + has_optical_size: true, }], }, )]); @@ -1886,24 +2075,82 @@ mod tests { } #[test] - fn glyph_metadata_keeps_fill_and_variable_weight_independent() { + fn glyph_metadata_keeps_fill_and_variations_independent() { + let mut variations = FontVariations::new(); + variations.set(VariationTag::new(b"wght"), 725.0); let attrs = SpanAttrs { font_size: 16.0, line_height: 18.0, letter_spacing: 0.0, letter_spacing_non_normal: false, weight: 400, - variation_weight: Some(725), + font_id: None, + variations: Some(Arc::new(variations)), italic: false, underline: true, color: [1, 2, 3, 255], family: Arc::from(FAMILY), clip_fill: Some(37), }; - let metadata = attrs.to_attrs().metadata; - assert_ne!(metadata & META_UNDERLINE, 0); - assert_eq!(metadata_fill(metadata), Some(37)); - assert_eq!(metadata_variation_weight(metadata), Some(725)); + let shaped = attrs.to_attrs(42); + assert_ne!(shaped.metadata & META_UNDERLINE, 0); + assert_eq!(metadata_fill(shaped.metadata), Some(37)); + assert_eq!(metadata_variation(shaped.metadata), Some(41)); + assert_eq!( + shaped + .font_variations + .iter() + .find(|variation| variation.tag == VariationTag::new(b"wght")) + .map(|variation| variation.value.0), + Some(725.0) + ); + } + + #[test] + fn static_text_keeps_the_zero_allocation_variation_path() { + let tree = obscura_dom::parse_html("

ordinary text

"); + let copy = tree.get_element_by_id("copy").unwrap(); + let mut style = LayoutStyle::default(); + style.display = Display::Block; + let static_font = ResolvedFont { + family: Arc::from(FAMILY), + font_id: None, + shape_weight: 400, + variation_weight: None, + has_optical_size: false, + }; + assert!(resolved_font_variations(&style, &static_font).is_none()); + let styles = HashMap::from([(copy, style)]); + let mut engine = TextEngine::new(); + let item = engine.try_build(&tree, copy, &styles).unwrap(); + + assert!(engine.items[item].variation_sets.is_empty()); + assert_eq!(engine.items[item].variation_sets.capacity(), 0); + } + + #[test] + fn programmatic_nonfinite_variations_never_reach_shape_or_raster() { + let style = LayoutStyle { + font_variation_settings: Some(vec![ + crate::FontVariationSetting { + tag: *b"opsz", + value: f32::NAN, + }, + crate::FontVariationSetting { + tag: *b"wght", + value: f32::INFINITY, + }, + ]), + ..Default::default() + }; + let font = ResolvedFont { + family: Arc::from(FAMILY), + font_id: None, + shape_weight: 400, + variation_weight: None, + has_optical_size: false, + }; + assert!(resolved_font_variations(&style, &font).is_none()); } #[test] @@ -1914,14 +2161,15 @@ mod tests { letter_spacing: 2.0, letter_spacing_non_normal: true, weight: 400, - variation_weight: None, + font_id: None, + variations: None, italic: false, underline: false, color: [0, 0, 0, 255], family: Arc::from(FAMILY), clip_fill: None, }; - let attrs = span.to_attrs(); + let attrs = span.to_attrs(1); assert_eq!(attrs.letter_spacing_opt.unwrap().0, 0.1); assert!(attrs.font_features.features.iter().any(|feature| { feature.tag == FeatureTag::STANDARD_LIGATURES && feature.value == 0 @@ -1932,7 +2180,7 @@ mod tests { let mut zero = span; zero.letter_spacing = 0.0; - assert!(zero.to_attrs().font_features.features.is_empty()); + assert!(zero.to_attrs(1).font_features.features.is_empty()); } fn variable_font_fixture() -> Vec { @@ -1976,7 +2224,12 @@ mod tests { .variable_swash .images .keys() - .map(|key| key.weight) + .filter_map(|key| { + key.variations + .iter() + .find(|variation| variation.tag == VariationTag::new(b"wght")) + .map(|variation| variation.value.0 as u16) + }) .collect(); cached_weights.sort_unstable(); cached_weights.dedup(); @@ -1984,10 +2237,10 @@ mod tests { } #[test] - fn variable_wght_changes_true_outline_without_changing_layout_geometry() { + fn variable_wght_changes_shape_and_true_outline() { let (regular_geometry, regular_ink, regular_cache) = render_variable_weight(400); let (black_geometry, black_ink, black_cache) = render_variable_weight(900); - assert_eq!(regular_geometry, black_geometry); + assert!(regular_geometry.0 > 0.0 && black_geometry.0 > 0.0); assert!( black_ink > regular_ink * 13 / 10, "wght=900 should carry substantially more raster ink: {regular_ink} vs {black_ink}" @@ -2034,11 +2287,105 @@ mod tests { .variable_swash .images .keys() - .map(|key| key.weight) + .filter_map(|key| { + key.variations + .iter() + .find(|variation| variation.tag == VariationTag::new(b"wght")) + .map(|variation| variation.value.0 as u16) + }) .collect(); assert_eq!(weights, std::collections::HashSet::from([400, 900])); } + fn render_tailwind_optical_heading( + optical_sizing: crate::FontOpticalSizing, + explicit_opsz: Option, + width: f32, + ) -> ((f32, f32), usize, std::collections::HashSet) { + let mut engine = TextEngine::new_with_web_fonts(&[WebFont { + data: variable_font_fixture(), + family: Some("Obscura VF Test".to_string()), + weight: Some((100, 900)), + italic: Some(false), + }]); + let tree = obscura_dom::parse_html( + "

Build whatever you want, without touching your CSS file.

", + ); + let copy = tree.get_element_by_id("copy").unwrap(); + let mut style = LayoutStyle::default(); + style.display = Display::Block; + style.font_family = Some("Obscura VF Test".to_string()); + style.font_weight = Some("500".to_string()); + style.font_size = Some(40.0); + style.line_height = Some(crate::LineHeight::Px(40.0)); + style.letter_spacing = Some(-2.0); + style.letter_spacing_non_normal = Some(true); + style.font_optical_sizing = Some(optical_sizing); + style.font_variation_settings = Some( + explicit_opsz + .map(|value| { + vec![crate::FontVariationSetting { + tag: *b"opsz", + value, + }] + }) + .unwrap_or_default(), + ); + let styles = HashMap::from([(copy, style)]); + let item = engine.try_build(&tree, copy, &styles).unwrap(); + let geometry = engine.measure(item, Some(width)); + let lines = engine.items[item].buffer.layout_runs().count(); + engine.finalize(item, (0.0, 0.0), width, None); + let mut pixmap = tiny_skia::Pixmap::new(512, 140).unwrap(); + engine.paint_item(item, &mut pixmap, (0.0, 0.0)); + let optical_values = engine + .variable_swash + .images + .keys() + .filter_map(|key| { + key.variations + .iter() + .find(|variation| variation.tag == VariationTag::new(b"opsz")) + .map(|variation| variation.value.0.to_bits()) + }) + .collect(); + (geometry, lines, optical_values) + } + + #[test] + fn optical_sizing_changes_tailwind_heading_shape_and_raster_axes() { + let (auto_geometry, auto_lines, auto_axes) = render_tailwind_optical_heading( + crate::FontOpticalSizing::Auto, + None, + 496.0, + ); + let (none_geometry, none_lines, none_axes) = render_tailwind_optical_heading( + crate::FontOpticalSizing::None, + None, + 496.0, + ); + let (explicit_geometry, explicit_lines, explicit_axes) = + render_tailwind_optical_heading( + crate::FontOpticalSizing::Auto, + Some(14.0), + 496.0, + ); + + assert_ne!( + auto_geometry, none_geometry, + "automatic opsz must affect the shaped heading advances" + ); + assert_eq!(auto_lines, none_lines); + assert_eq!(explicit_lines, none_lines); + assert_eq!(explicit_geometry, none_geometry); + assert_eq!(auto_axes, std::collections::HashSet::from([40.0f32.to_bits()])); + assert!(none_axes.is_empty()); + assert_eq!( + explicit_axes, + std::collections::HashSet::from([14.0f32.to_bits()]) + ); + } + #[test] fn text_only_inline_block_keeps_an_internal_shaping_context() { let tree = obscura_dom::parse_html( diff --git a/crates/obscura-render/src/lib.rs b/crates/obscura-render/src/lib.rs index c579261..c7f3ff9 100644 --- a/crates/obscura-render/src/lib.rs +++ b/crates/obscura-render/src/lib.rs @@ -183,6 +183,27 @@ impl Dimension { } } +/// Computed CSS `font-optical-sizing`. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +pub enum FontOpticalSizing { + /// Let a variable font's `opsz` axis follow the computed font size. + #[default] + Auto, + /// Leave the font's optical-size axis at its normal/default setting. + None, +} + +/// One canonical CSS `font-variation-settings` axis assignment. +/// +/// The CSS parser guarantees a printable four-byte ASCII tag and a finite +/// value. Settings are stored in tag order with duplicate tags collapsed so +/// shaping and rasterization can consume one deterministic axis tuple. +#[derive(Debug, Clone, Copy, PartialEq)] +pub struct FontVariationSetting { + pub tag: [u8; 4], + pub value: f32, +} + /// The subset of CSS that influences box layout. Expanded in later phases. #[derive(Debug, Clone, Default)] pub struct LayoutStyle { @@ -374,6 +395,12 @@ pub struct LayoutStyle { /// resolves it to a bundled face (Liberation Sans/Serif/Mono) the way /// Chromium picks a generic family on this host. pub font_family: Option, + /// Computed inherited `font-optical-sizing`. `None` during cascade means + /// inherit; the top-down pass resolves every element to `Some`. + pub font_optical_sizing: Option, + /// Computed inherited `font-variation-settings`. `None` during cascade + /// means inherit, while `Some(Vec::new())` is the `normal` initial value. + pub font_variation_settings: Option>, /// Inherited `text-align`, represented with the matching horizontal /// alignment keywords. Kept separate from flex/grid `align-items`: using /// one field for both made `text-align:left` shrink-wrap flex children. diff --git a/crates/obscura-render/src/style.rs b/crates/obscura-render/src/style.rs index 39ba5e0..24b010a 100644 --- a/crates/obscura-render/src/style.rs +++ b/crates/obscura-render/src/style.rs @@ -9,6 +9,7 @@ //! the crate dependency-light. use crate::{Display, Edges, LayoutStyle}; +use std::collections::BTreeMap; /// Compute the layout-relevant style for an element: UA defaults for its tag, /// overridden by its inline `style="..."` declarations. @@ -431,6 +432,106 @@ fn parse_container_shorthand(value: &str) -> Option<(Vec, crate::Contain } } +fn parse_font_variation_settings(value: &str) -> Option> { + let mut input = cssparser::ParserInput::new(value.trim()); + let mut parser = cssparser::Parser::new(&mut input); + if parser.is_exhausted() { + return None; + } + + // A map both implements CSS's "last duplicate wins" rule and gives the + // inline engine a stable tag order independent of author ordering. + let mut settings = BTreeMap::new(); + loop { + let tag = parser.expect_string_cloned().ok()?; + let bytes = tag.as_bytes(); + if bytes.len() != 4 || !bytes.iter().all(|byte| (0x20..=0x7e).contains(byte)) { + return None; + } + let value = parse_font_variation_number(&mut parser)?; + if !value.is_finite() { + return None; + } + let tag = [bytes[0], bytes[1], bytes[2], bytes[3]]; + // Keep numerically equivalent signed zeroes canonical for stable cache + // keys later in the shaping and rasterization pipeline. + settings.insert(tag, if value == 0.0 { 0.0 } else { value }); + if parser.is_exhausted() { + break; + } + parser.expect_comma().ok()?; + if parser.is_exhausted() { + return None; + } + } + Some( + settings + .into_iter() + .map(|(tag, value)| crate::FontVariationSetting { tag, value }) + .collect(), + ) +} + +fn parse_font_variation_number(parser: &mut cssparser::Parser<'_, '_>) -> Option { + if let Ok(value) = parser.try_parse(|input| input.expect_number()) { + return value.is_finite().then_some(value); + } + let start = parser.position(); + let token = parser.next().ok()?.clone(); + let cssparser::Token::Function(name) = token else { + return None; + }; + if !matches!( + name.to_ascii_lowercase().as_str(), + "calc" | "min" | "max" | "clamp" | "round" + ) { + return None; + } + parser + .parse_nested_block(|input| unitless_math_tokens(input, 0)) + .ok()?; + let expression = parser.slice_from(start); + resolve_contextual_length(expression, 0.0, 0.0, 0.0, 0.0, 0.0) + .filter(|value| value.is_finite()) +} + +fn unitless_math_tokens<'i, 't>( + parser: &mut cssparser::Parser<'i, 't>, + depth: u8, +) -> Result<(), cssparser::ParseError<'i, ()>> { + if depth >= 64 { + return Err(parser.new_custom_error(())); + } + while !parser.is_exhausted() { + let token = parser + .next_including_whitespace_and_comments()? + .clone(); + match token { + cssparser::Token::Number { .. } + | cssparser::Token::WhiteSpace(_) + | cssparser::Token::Comment(_) + | cssparser::Token::Comma + | cssparser::Token::Delim('+') + | cssparser::Token::Delim('-') + | cssparser::Token::Delim('*') + | cssparser::Token::Delim('/') => {} + cssparser::Token::Function(name) + if matches!( + name.to_ascii_lowercase().as_str(), + "calc" | "min" | "max" | "clamp" | "round" + ) => + { + parser.parse_nested_block(|input| unitless_math_tokens(input, depth + 1))?; + } + cssparser::Token::ParenthesisBlock => { + parser.parse_nested_block(|input| unitless_math_tokens(input, depth + 1))?; + } + _ => return Err(parser.new_custom_error(())), + } + } + Ok(()) +} + fn apply_value(style: &mut LayoutStyle, name: &str, value: &str) { match name { "display" => { @@ -735,6 +836,30 @@ fn apply_value(style: &mut LayoutStyle, name: &str, value: &str) { style.font_family = Some(v); } } + "font-optical-sizing" => { + let parsed = match value.trim().to_ascii_lowercase().as_str() { + "inherit" | "unset" | "revert" | "revert-layer" => Some(None), + "auto" | "initial" => Some(Some(crate::FontOpticalSizing::Auto)), + "none" => Some(Some(crate::FontOpticalSizing::None)), + _ => None, + }; + if let Some(value) = parsed { + style.font_optical_sizing = value; + } + } + "font-variation-settings" => { + let lower = value.trim().to_ascii_lowercase(); + if matches!( + lower.as_str(), + "inherit" | "unset" | "revert" | "revert-layer" + ) { + style.font_variation_settings = None; + } else if matches!(lower.as_str(), "normal" | "initial") { + style.font_variation_settings = Some(Vec::new()); + } else if let Some(settings) = parse_font_variation_settings(value) { + style.font_variation_settings = Some(settings); + } + } // Text alignment is inherited and applies to inline line boxes. It is // deliberately separate from flex/grid `align-items`, which positions // child boxes rather than text inside them. @@ -1242,6 +1367,8 @@ pub(crate) fn supports_declaration(name: &str, value: &str) -> bool { | "font-weight" | "font-family" | "font-style" + | "font-optical-sizing" + | "font-variation-settings" | "text-align" | "text-transform" | "text-decoration" @@ -1358,6 +1485,14 @@ pub(crate) fn supports_declaration(name: &str, value: &str) -> bool { "container-type" => parse_container_type(value).is_some(), "container-name" => parse_container_names(value).is_some(), "container" => parse_container_shorthand(value).is_some(), + "font-optical-sizing" => matches!( + value.to_ascii_lowercase().as_str(), + "auto" | "none" + ), + "font-variation-settings" => { + value.eq_ignore_ascii_case("normal") + || parse_font_variation_settings(value).is_some() + } "float" => matches!( value.to_ascii_lowercase().as_str(), "none" | "left" | "right" @@ -3386,6 +3521,8 @@ fn apply_font_shorthand(style: &mut LayoutStyle, value: &str) { // The shorthand resets every constituent before applying supplied values. style.font_style_italic = Some(false); style.font_weight = Some("400".to_string()); + style.font_optical_sizing = Some(crate::FontOpticalSizing::Auto); + style.font_variation_settings = Some(Vec::new()); style.line_height = Some(crate::LineHeight::Normal); style.line_height_expression = None; for token in &tokens[..size_index] { @@ -4508,6 +4645,168 @@ mod tests { assert_eq!(computed_font_weight(Some("lighter"), 900), 700); } + #[test] + fn variable_font_properties_parse_canonically_and_atomically() { + let style = compute_style( + "span", + Some( + r#"font-optical-sizing:none; + font-variation-settings:"wght" 500, "\6f psz" 14, "wght" 650"#, + ), + ); + assert_eq!( + style.font_optical_sizing, + Some(crate::FontOpticalSizing::None) + ); + assert_eq!( + style.font_variation_settings.as_deref(), + Some( + [ + crate::FontVariationSetting { + tag: *b"opsz", + value: 14.0, + }, + crate::FontVariationSetting { + tag: *b"wght", + value: 650.0, + }, + ] + .as_slice() + ) + ); + + let case_sensitive = compute_style( + "span", + Some(r#"font-variation-settings:"wght" 400, "WGHT" 700"#), + ); + assert_eq!( + case_sensitive.font_variation_settings.as_deref(), + Some( + [ + crate::FontVariationSetting { + tag: *b"WGHT", + value: 700.0, + }, + crate::FontVariationSetting { + tag: *b"wght", + value: 400.0, + }, + ] + .as_slice() + ) + ); + + for malformed in [ + r#""abc" 1"#, + r#"wght 1"#, + r#""wght" 1,"#, + r#""wght" calc(1px)"#, + r#""wght" 1e999"#, + r#""wégt" 1"#, + ] { + let css = format!( + r#"font-variation-settings:"opsz" 20;font-variation-settings:{malformed}"# + ); + let unchanged = compute_style("span", Some(&css)); + assert_eq!( + unchanged.font_variation_settings.as_deref(), + Some( + [crate::FontVariationSetting { + tag: *b"opsz", + value: 20.0, + }] + .as_slice() + ), + "invalid declaration was not atomic: {malformed}" + ); + } + } + + #[test] + fn variable_font_css_wide_values_and_font_shorthand_obey_cascade() { + let inherited = compute_style( + "span", + Some( + r#"font-optical-sizing:none;font-optical-sizing:unset; + font-variation-settings:"wght" 700;font-variation-settings:inherit"#, + ), + ); + assert_eq!(inherited.font_optical_sizing, None); + assert_eq!(inherited.font_variation_settings, None); + + let reset = compute_style( + "span", + Some( + r#"font-optical-sizing:none;font-optical-sizing:initial; + font-variation-settings:"wght" 700;font-variation-settings:normal"#, + ), + ); + assert_eq!( + reset.font_optical_sizing, + Some(crate::FontOpticalSizing::Auto) + ); + assert_eq!(reset.font_variation_settings, Some(Vec::new())); + + let reverted = compute_style( + "span", + Some( + r#"font-optical-sizing:none;font-optical-sizing:revert; + font-variation-settings:"wght" 700;font-variation-settings:revert-layer"#, + ), + ); + assert_eq!(reverted.font_optical_sizing, None); + assert_eq!(reverted.font_variation_settings, None); + + let shorthand = compute_style( + "span", + Some( + r#"font-optical-sizing:none;font-variation-settings:"opsz" 22; + font:italic 500 20px/1.2 Inter"#, + ), + ); + assert_eq!( + shorthand.font_optical_sizing, + Some(crate::FontOpticalSizing::Auto) + ); + assert_eq!(shorthand.font_variation_settings, Some(Vec::new())); + + assert!(supports_declaration("font-optical-sizing", "auto")); + assert!(!supports_declaration("font-optical-sizing", "enabled")); + assert!(supports_declaration( + "font-variation-settings", + r#""opsz" 18, "wght" 500"# + )); + assert!(supports_declaration( + "font-variation-settings", + r#""opsz" calc(18)"# + )); + + let calculated = compute_style( + "span", + Some(r#"font-variation-settings:"opsz" calc(10 * 2), "wght" max(400, 500)"#), + ); + assert_eq!( + calculated.font_variation_settings.as_deref(), + Some( + [ + crate::FontVariationSetting { + tag: *b"opsz", + value: 20.0, + }, + crate::FontVariationSetting { + tag: *b"wght", + value: 500.0, + }, + ] + .as_slice() + ) + ); + assert!(!supports_declaration( + "font-variation-settings", + r#""opsz" calc(18px)"# + )); + } + #[test] fn letter_spacing_preserves_units_resets_and_invalid_cascade_values() { let relative = compute_style("span", Some("letter-spacing:-.05em")); diff --git a/vendor/cosmic-text/Cargo.toml b/vendor/cosmic-text/Cargo.toml new file mode 100644 index 0000000..fd7f5f7 --- /dev/null +++ b/vendor/cosmic-text/Cargo.toml @@ -0,0 +1,187 @@ +# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO +# +# When uploading crates to the registry Cargo will automatically +# "normalize" Cargo.toml files for maximal compatibility +# with all versions of Cargo and also rewrite `path` dependencies +# to registry (e.g., crates.io) dependencies. +# +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. + +[package] +edition = "2021" +rust-version = "1.75" +name = "cosmic-text" +version = "0.14.2" +authors = ["Jeremy Soller "] +build = false +autolib = false +autobins = false +autoexamples = false +autotests = false +autobenches = false +description = "Pure Rust multi-line text handling" +documentation = "https://docs.rs/cosmic-text/latest/cosmic_text/" +readme = "README.md" +license = "MIT OR Apache-2.0" +repository = "https://github.com/pop-os/cosmic-text" + +[package.metadata.docs.rs] +features = ["vi"] + +[features] +default = [ + "std", + "swash", + "fontconfig", +] +fontconfig = [ + "fontdb/fontconfig", + "std", +] +monospace_fallback = [] +no_std = [ + "rustybuzz/libm", + "hashbrown", + "dep:libm", +] +peniko = ["dep:peniko"] +shape-run-cache = [] +std = [ + "fontdb/memmap", + "fontdb/std", + "rustybuzz/std", + "swash?/std", + "sys-locale", + "ttf-parser/std", + "unicode-bidi/std", +] +vi = [ + "modit", + "syntect", + "cosmic_undo_2", +] +warn_on_missing_glyphs = [] +wasm-web = ["sys-locale?/js"] + +[lib] +name = "cosmic_text" +path = "src/lib.rs" + +[[test]] +name = "editor_modified_state" +path = "tests/editor_modified_state.rs" + +[[test]] +name = "shaping_and_rendering" +path = "tests/shaping_and_rendering.rs" + +[[test]] +name = "wrap_stability" +path = "tests/wrap_stability.rs" + +[[test]] +name = "wrap_word_fallback" +path = "tests/wrap_word_fallback.rs" + +[[bench]] +name = "layout" +path = "benches/layout.rs" +harness = false + +[dependencies.bitflags] +version = "2.4.1" + +[dependencies.cosmic_undo_2] +version = "0.2.0" +optional = true + +[dependencies.fontdb] +version = "0.16" +default-features = false + +[dependencies.hashbrown] +version = "0.14.1" +optional = true +default-features = false + +[dependencies.libm] +version = "0.2.8" +optional = true + +[dependencies.log] +version = "0.4.20" + +[dependencies.modit] +version = "0.1.4" +optional = true + +[dependencies.peniko] +version = "0.3.1" +optional = true + +[dependencies.rangemap] +version = "1.4.0" + +[dependencies.rustc-hash] +version = "1.1.0" +default-features = false + +[dependencies.rustybuzz] +version = "0.14" +features = ["libm"] +default-features = false + +[dependencies.self_cell] +version = "1.0.1" + +[dependencies.smol_str] +version = "0.2.2" +default-features = false + +[dependencies.swash] +version = "0.2.0" +features = [ + "render", + "scale", +] +optional = true +default-features = false + +[dependencies.syntect] +version = "5.1.0" +optional = true + +[dependencies.sys-locale] +version = "0.3.1" +optional = true + +[dependencies.ttf-parser] +version = "0.21" +default-features = false + +[dependencies.unicode-bidi] +version = "0.3.13" +features = ["hardcoded-data"] +default-features = false + +[dependencies.unicode-linebreak] +version = "0.1.5" + +[dependencies.unicode-script] +version = "0.5.5" + +[dependencies.unicode-segmentation] +version = "1.10.1" + +[dev-dependencies.criterion] +version = "0.5.1" +features = ["cargo_bench_support"] +default-features = false + +[dev-dependencies.tiny-skia] +version = "0.11.2" + +[profile.test] +opt-level = 1 diff --git a/vendor/cosmic-text/Cargo.toml.orig b/vendor/cosmic-text/Cargo.toml.orig new file mode 100644 index 0000000..ffa1eae --- /dev/null +++ b/vendor/cosmic-text/Cargo.toml.orig @@ -0,0 +1,84 @@ +[package] +name = "cosmic-text" +description = "Pure Rust multi-line text handling" +version = "0.14.2" +authors = ["Jeremy Soller "] +edition = "2021" +license = "MIT OR Apache-2.0" +documentation = "https://docs.rs/cosmic-text/latest/cosmic_text/" +repository = "https://github.com/pop-os/cosmic-text" +rust-version = "1.75" + +[dependencies] +bitflags = "2.4.1" +cosmic_undo_2 = { version = "0.2.0", optional = true } +fontdb = { version = "0.16", default-features = false } +hashbrown = { version = "0.14.1", optional = true, default-features = false } +libm = { version = "0.2.8", optional = true } +log = "0.4.20" +modit = { version = "0.1.4", optional = true } +rangemap = "1.4.0" +rustc-hash = { version = "1.1.0", default-features = false } +rustybuzz = { version = "0.14", default-features = false, features = ["libm"] } +self_cell = "1.0.1" +smol_str = { version = "0.2.2", default-features = false } +syntect = { version = "5.1.0", optional = true } +sys-locale = { version = "0.3.1", optional = true } +ttf-parser = { version = "0.21", default-features = false } +unicode-linebreak = "0.1.5" +unicode-script = "0.5.5" +unicode-segmentation = "1.10.1" + +[dependencies.swash] +version = "0.2.0" +default-features = false +features = ["render", "scale"] +optional = true + +[dependencies.unicode-bidi] +version = "0.3.13" +default-features = false +features = ["hardcoded-data"] + +[dependencies.peniko] +version = "0.3.1" +optional = true + +[features] +default = ["std", "swash", "fontconfig"] +fontconfig = ["fontdb/fontconfig", "std"] +monospace_fallback = [] +no_std = ["rustybuzz/libm", "hashbrown", "dep:libm"] +peniko = ["dep:peniko"] +shape-run-cache = [] +std = [ + "fontdb/memmap", + "fontdb/std", + "rustybuzz/std", + "swash?/std", + "sys-locale", + "ttf-parser/std", + "unicode-bidi/std", +] +vi = ["modit", "syntect", "cosmic_undo_2"] +wasm-web = ["sys-locale?/js"] +warn_on_missing_glyphs = [] + +[[bench]] +name = "layout" +harness = false + +[workspace] +members = ["examples/*"] + +[dev-dependencies] +tiny-skia = "0.11.2" +criterion = { version = "0.5.1", default-features = false, features = [ + "cargo_bench_support", +] } + +[profile.test] +opt-level = 1 + +[package.metadata.docs.rs] +features = ["vi"] diff --git a/vendor/cosmic-text/LICENSE-APACHE b/vendor/cosmic-text/LICENSE-APACHE new file mode 100644 index 0000000..6f75635 --- /dev/null +++ b/vendor/cosmic-text/LICENSE-APACHE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/vendor/cosmic-text/LICENSE-MIT b/vendor/cosmic-text/LICENSE-MIT new file mode 100644 index 0000000..db6aab1 --- /dev/null +++ b/vendor/cosmic-text/LICENSE-MIT @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2022 System76 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/cosmic-text/README.md b/vendor/cosmic-text/README.md new file mode 100644 index 0000000..979a333 --- /dev/null +++ b/vendor/cosmic-text/README.md @@ -0,0 +1,94 @@ +# COSMIC Text + +[![crates.io](https://img.shields.io/crates/v/cosmic-text.svg)](https://crates.io/crates/cosmic-text) +[![docs.rs](https://docs.rs/cosmic-text/badge.svg)](https://docs.rs/cosmic-text) +![license](https://img.shields.io/crates/l/cosmic-text.svg) +[![Rust workflow](https://github.com/pop-os/cosmic-text/workflows/Rust/badge.svg?event=push)](https://github.com/pop-os/cosmic-text/actions) + +Pure Rust multi-line text handling. + +COSMIC Text provides advanced text shaping, layout, and rendering wrapped up +into a simple abstraction. Shaping is provided by rustybuzz, and supports a +wide variety of advanced shaping operations. Rendering is provided by swash, +which supports ligatures and color emoji. Layout is implemented custom, in safe +Rust, and supports bidirectional text. Font fallback is also a custom +implementation, reusing some of the static fallback lists in browsers such as +Chromium and Firefox. Linux, macOS, and Windows are supported with the full +feature set. Other platforms may need to implement font fallback capabilities. + +## Screenshots + +Arabic translation of Universal Declaration of Human Rights +[![Arabic screenshot](screenshots/arabic.png)](screenshots/arabic.png) + +Hindi translation of Universal Declaration of Human Rights +[![Hindi screenshot](screenshots/hindi.png)](screenshots/hindi.png) + +Simplified Chinese translation of Universal Declaration of Human Rights +[![Simplified Chinses screenshot](screenshots/chinese-simplified.png)](screenshots/chinese-simplified.png) + +## Roadmap + +The following features must be supported before this is "ready": + +- [x] Font loading (using fontdb) + - [x] Preset fonts + - [x] System fonts +- [x] Text styles (bold, italic, etc.) + - [x] Per-buffer + - [x] Per-span +- [x] Font shaping (using rustybuzz) + - [x] Cache results + - [x] RTL + - [x] Bidirectional rendering +- [x] Font fallback + - [x] Choose font based on locale to work around "unification" + - [x] Per-line granularity + - [x] Per-character granularity +- [x] Font layout + - [x] Click detection + - [x] Simple wrapping + - [ ] Wrapping with indentation + - [ ] No wrapping + - [ ] Ellipsize +- [x] Font rendering (using swash) + - [x] Cache results + - [x] Font hinting + - [x] Ligatures + - [x] Color emoji +- [x] Text editing + - [x] Performance improvements + - [x] Text selection + - [x] Can automatically recreate https://unicode.org/udhr/ without errors (see below) + - [x] Bidirectional selection + - [ ] Copy/paste +- [x] no_std support (with `default-features = false`) + - [ ] no_std font loading + - [x] no_std shaping + - [x] no_std layout + - [ ] no_std rendering + +The UDHR (Universal Declaration of Human Rights) test involves taking the entire +set of UDHR translations (almost 500 languages), concatenating them as one file +(which ends up being 8 megabytes!), then via the `editor-test` example, +automatically simulating the entry of that file into cosmic-text per-character, +with the use of backspace and delete tested per character and per line. Then, +the final contents of the buffer is compared to the original file. All of the +106746 lines are correct. + +## License + +Licensed under either of + + * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or + http://www.apache.org/licenses/LICENSE-2.0) + * MIT license ([LICENSE-MIT](LICENSE-MIT) or + http://opensource.org/licenses/MIT) + +at your option. + +### Contribution + +Unless you explicitly state otherwise, any contribution intentionally submitted +for inclusion in the work by you, as defined in the Apache-2.0 license, shall be +dual licensed as above, without any additional terms or conditions. diff --git a/vendor/cosmic-text/fonts/NotoSans-LICENSE b/vendor/cosmic-text/fonts/NotoSans-LICENSE new file mode 100644 index 0000000..cb2a761 --- /dev/null +++ b/vendor/cosmic-text/fonts/NotoSans-LICENSE @@ -0,0 +1,93 @@ +Copyright 2012 Google Inc. All Rights Reserved. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/vendor/cosmic-text/fonts/NotoSans-Regular.ttf b/vendor/cosmic-text/fonts/NotoSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7552fbe806d112882455dd2fbc024f8ef22a13a7 GIT binary patch literal 556216 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
5bAGr#DG&n%*qEd3uZVmg)ZKt7CL$r*}yY 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%0Ah58pD~<*D%s(#W-_;QwM+i?GJL5CsX1zel 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
}DWVO?HjH`Xp$ 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

DOli*;RHLz;!_agO^Xu({=*@%e``&;5 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 j02yFT32 zC(X{53?4e4fjSnJ^9Ag zV8o?mAhzw^$+3jhkz+_qoXK_-rK8Ky_a&??v={If42OqK?1zH8|HM%EbfI`Ii*%Jqbqi}|4F^MU z#%j=NKDjme6N%9o)4K6Ft<>i>QhUa*3LS$XlZ=|Y`m{(rpNV>MOmblpbv0kK^6RII z*-JN2!x=4r93%9Pm|ySi=niJp*BXN`m7d!?ZOyfv*E~H2>NhVIVEk^z?} z5KIn^*VUP%e)!1;gQ0*Vug;yDgFcZ4Q(&7$H&TVBD!dft=v2fxH8u?R-HDEVj95fG zP9SWrtjv63|KV0!GEq@gU2Rtfq1wSe5sD%-e0QHL%OL8jcQ~xd_{7-gKyU9rXXmj4 zyLar^vFliGXICHWVF3O~4cQJ!(TWu-DrFNpi6i46Opq?o@Zr7f-q!L&?8@aZG0%5| zG2dgF@9Y@`iylB_$+-V7f7$EPz?_pOje7RI^%wUdSRU!`Vb%9v*>?a8TJ8Jxz5cVd z1*vbPzNKwx`|%5JZtldW>e%wuE5Cx7^=q;>_dvZl{Pv%}zcBSM{Rtoa#fyN@e8nY_ z1qMfgttJ*=7w#qi2pSB-xhGbN6EU*BgDyrOfejdifjctgt{)uqCWVRd2ws7x(1lTF40(At`N7DgHDQ$B~gfBO#vl_ zAQDU{6!^BvssJ)HDh32D9M_tSax_K0Zbx301xb66M>H!J29x5VT&pe909_I|FKf0v z-=u}1QfbOAfv>%^&<2pTC<$6D5%mlLh`~P$h%U$XmjVz3(WwahMEohBLpTqZsTe?P z-SsnO%mL`7#9_Bu;q@r1Zk#u_X?8_^aiI<5cecFT{L-o!IeMI@GP|s4(V|6{HI{%^ zSCmofoMCRY3Pd58Z6`fLA*?%rWs@}uX>IsmXqlxhXQWyjI`cenc|Jw08+Fpz=xO3c8(*Z$Go z-MjYeKe!KRQ7Xl(v9wr~Vzh;TVb&Iy49TIP;el>LrrmCLz{#b+`Gtc~Hs%AdhPzr! z44g8cUW~T9(t0>XYI4nbwaQ{K8x$$(9oE8%Ig74Xykzl0=X|*SD}f-ywIzp-?1Iz& zh-U(>7Shyr5JAq~_5nZejc~DOw8?~AuXI<#d;ro0t1Soqb>}s(zb&7UpKsJqay@kf zGrgpA-W9ig>7fU|_SFZzavyUGjxSZ{vI{dN_Pzy^$vX#6j6^Up;_>IGy!hVkt|%03 zh1NvL^D>O?>JPTUaJcQmoqG=*>+G9={bsCxupg(geE@VtIDe4z9Qbh4d;fy?d;fjr zC0AukYk?mqI2j`PQ(y}PTz?@dD)@ZC$VXIwXfHW7Dbotv*?=~|0sx+|cru18)4)=S zW5EcJu7E;|+vF)RNZACi6d)#4?Xrtw6Jx=YL?!|08S=(~Tn(Kv81!;0kI7&-(JD(O z1d8egL@B!g0CdR#)g~AqL{+O2UV5<(4%7ttZmR|kQlep%!Zt6JGDh4PWQ7-sG=>Z{ zPE`mUG(d<0FX+{9gFuH$XU8NNakf<$mAR{xYUExd%oG?Rg#dRZ#4-Vsjp%STsRv=B zLIKE(mUvs$V1xu6PGxMQyU#O`Qh^YP(*eM^Mg{#P9-s7vlC;E0hT{^0+~+yTuXH|) z$%S?K1EjKZaFSc7_7ZK>v@z1gGNsGQ>|ng$%{ctX!wbao;FUL zYdL0)_-xkBu&O)Qdl`Tl--bl~UsIsQF2D@4xae#XSc*QoRuP-S#+P%g-a6eX1d3!RCiJmXqHw@EA-;aXzR@ULiQ+%4>}{Y1r(C!!CMez@XT zk(Z;M`1JTBj^b!G^^-fWq5Fwy7j2}p!7?#@FVDOx{u8{ItE!ZPor1NNvDY)KVG;XH z#Jj)5g6C%QhpeArx5U^9hTRuKG(4vrov$^D^SRJH%;wku6tgL!U3Ukz%!jx%dNt5R z5$_2pF=oVM=i&|EU){yDXGQ!6my0}^^ohn#3^s+-NiKXp(cYP;;xqeXE*AhWSw`)RE=sqz4}yk9 zK@amGMu9v=ol_M%*&@Y({E9bQ|Asf>pTqO}IcDo$HBVa(e#M)uTbyFJFvUy^h9<;O zKy$%F0QD>eOSvW2Gtdc(Lgxr5F*Go*sxttx1)`y2&hbIfYs&%pR*R46R6{3<9KRrwZ$+gVX)v)Kv}ZZUs;9hADl z!qSQwq;RakyqS=$U9$!lhh?*7lo&;rP($q6wIEu(<>u>`&8c>1m}q653TuG8$|k7V zP0SjXb7%-0iZEjfVv|F_>BlG~aTw7`1trxBZoI6ne%`$0*8@qh!a1|HY2obaRxPM1 zv2iqsDS;w$<;r#JeUB_mn_PvD+_!F}yL1!zsy^KG4j{enYx$ zp8t0CU7RXkm%1dSY}O*f1== ze4~RNP}U6e0v`aS9Al5uhelkDet#H*yNJMuh5b;fIsF1UP}F9Sg-6DH355>C;)n%_ zdWXkjh_&zsV!_F9yj73@dw>ipaj2zGXxf|PL{CIlWHUos`ef`AnS$9+*C7g8(%-q4e&pCS;??SyAi1(JIX=?CBhGl{mDllx+I*{OFRia=)*&~-k$BYJ(!ek1 zoGVIpmQfUrGf=Rj6omtYZ6X#2R4^)15{8^RGYZF&rBzVeqp20c%aB1Y@?_9kJQ=hN zQjao!zr>S4FY{!OGn_y-!fn8+7373CJXrYAG5k2$Tu&b)P{$Y|?^JlH)0vL#+jr!6 z&tOQMMAr}*E$T$TvcIFZZ$gk@m7GL6C6J6RT|6H2j-q>Ey&CW681{x*i$dPvjuDS1 zrUD6f??J-xj!U(GuEa-`nxNvjxs+_q*AT)2@z4@iL|NcHCpCQkrCAoKC z$D2<*eifYd^hdJp>-hgrswMS})ZN_Qms0l#TYmA(F9{0vkjnMr4-bxsG9U#Z0-IBx zvzXbi8c_g>zW$J0oD7UakWxE}+217x);k5hK_F;bGe&m5PZJ0FP0Ei|3~@>C_GpB>@6Sc7TLRc~+izGJ&-2nH!AC_pHP0S_Sy1cf==F3BGO;=gINq9ak#mluo%b2 zutFT-WMe!K6BBAhCeeVmQm>WDrbvF1p5bu|lTc<^L^4sBWaYG|G`Vz;f+-3V#`yxT zj)D_L$uTLg%$KU;6kZqTKhZJZ2NOQ#J(eRPCTOhHP+0Kt2@#!eQlP;-pB9>&rnm$$ z^8wx}@tf-eC5kB<E6hTrq}2|xb=+pHf|4r0=Sg?A5CD3Wt*{z6)oNy* ztEHi-Y5ttrx_JwoS1g`iZP%m{3`pz|77B$E!Rlm|p=XPcBAz+Zx$Fi+yWFtMIn!NS zG<{_!YmmYsjCfohAndfmGP$KtL;{i(%Wt~zmfLQ-ZDFop`GV!2yL$QZRjY4WJ!vTEzSs)6+54Xl5h-i>I zLx~#(26)C{r-MxwI&C^8q406>+(Gj=y%ZBU7-=zcOIaDjw@QuS2Dm7^(h0jn5}ORc z)QPo?LD{HOLHOJJ== zooFu-=LpS#R9Z4V*GxCo$-ydXtr$G1Uq7=uX}JGFyCV?iBP7^ zFe(KuttjG24j?F67V%|9Mk0*M=^G2gBh|Ha4Gj&>%jXm}EL^y-p|HNLK(8-wXk!5t zh15$`I*2cwGA(Y^&?nSIS(vi3ifZPI=FhKT3SBLRCWM&Hb&$0&a8Yz+^UDb*IVu7<>huOo|@i-BpG>m*`--fHM2?^mx`7yZ3M+x zi(&O@1f|`&YV~b*+;-Dy!rT!Jeu2bT-ZZaJ!NQg(Q5*3~qgoO(7!a2RDWL%C9*YP>gWZGvQP0TmAfitD1_u6{L#h!m zKfDiM6mAuRUlKE2t2oF?par<3Nih6x*|d>y38ZonY2j3&frMHD1z4aCjRmm^5y}85 zCV(Xd5|kEH(IM~xVpHR%u&jW80#Ka^uw}Ox;&Eihz`%h$6}h6gnKIRiV+hzb9GZ2J zcJImrog~II4ORqwr*`eyzI7wQ9yV^>zRO)+#wA#ROqwcF_X0xWV}sjO0)qz*Ldy(T z+QSMao)p3wjnxL$JQ+HzA;V~-{9B3^p@88o7@VDi1Z#!(O1A3d$cZ9CmL4%eqVNcJ z?U@?q#C42k*#F` z^Bd*|?iRt@+c@(jxW(~NG6|y_vQ46zH4f8T3(GoCx8=bC*TU{GOs!~?pYEKjum~fy zBMywyT27~RJL;+o=2lk=b8j>A0-Y9FRqw{vM)6VdD2z%jCWva5A6XM|S{Bq18JmH+ zBqJShuR70Jsc@$#;{Kd>3Y?9gU20)R!AvR)8<|?vm(E08qh?mPT0r~B+>2Mo_Tfxg z*whH>ur!HKANe)vVh`g-UBsfEkWgYAmNlK@ZmD=r@Pg+htaMNg5(ez@LTfHlh67(; zibf1g%p%mkc?0UA6R?4`uvgL(JS2x5tc8`*BZSHoLw%bDbxV+|znDtjE3(3$&k`=N zpB~?Th9wU6wjgH-*UbjMGMk*Tgugju32#L&+Q347Biw$W42EKE#`-MUBs;ihIeQJ- zoU(&cn`8%XB^7s`qxc%3G-z<%LjN8;wwA}k(bNU1g3;NY(AVKM#`9&G-ccAnlh=!QR%=DTZuH% z-I8;rn#_=HYz+^G=|5x7<7DS)vj}N=Q_3FNXvrld8r<}!bZF?xP?Q_Xmt316$*-E1 z$LY#^Re7fKhC6R?9_&hX(SOF3{V`>CRynkWa#C{FEC$ns=%Fus;R_Ef#_jt)^Az{@ zef3ROL*KairaSMy|Nc9fdt5EXkL$wg*MDmXs5jC&FtlLidzs%_fACvY|nlTDX8r5~qNSpK#p>y(b1){VQmy8#eH&@nKZr}X5Ew0=x(NWdt#EmK&)-NREG z+)T_?bPxI4mi#l-<+PTJ6)ixVFo-E(dMo&t#++7^;r1ue7H-S98mBd4LPa9~7wN)K zhDj?B!`^Iz)fwwZ6D&Iv-Ii&^-L^6|BqEtsmAUyeBgiSlTOSj#rQ3kl7|?rW3kA@I3Py=1`+&-(Yac9DzgPDGjwL^(u5J9 zd7Xv96Vs~As=)m-%uAi{&fAqy7MU=87eX&<+HL%X3Sf@eEB?C5>}C< zEW;skI5N(yJ1bA=&L7v2Gap#TAB6lm^tW^A&irwcuD6t)U4KsN&8H33kL%DGY2Ep> zL0eUcUU)7&`Yi2NoKuxfYtV-d9z1;XC<16f9P+PoY10{LB^o9NJ(OZ@dtrr|uQ)?W zD8cDORxrd9Vx2W*O23doUBFkI`6HWOcei2*>#Bp+i!!AspVE}YVv&G!WKKyYJ()A% zD(kapyW05G_P3}1=l2KY?U8gyEP-k^i#yqi?#UAy<}ImfV1&(de=uY8T{ zB6MmARG%sRRhCw(OQ2z?vPrFG@BJESuUn>+Y6u!(GJ{j9#i(Z4(@J#&b(4crs^KQ! zw4+abPN#HgSz4!_Iw$DVymKOrdg`1=qnE;cMm zYt&bx?iZ3qy#VnJKg6qJeQAvv33G*cb(}^$>P0;%Ol#C})I~Z@qegbN^z-|4=T%ui z8Z{d^fg@WB(<=2^)C~osQZwHKZ#Z5lO`K9~!Qw)=`3R>}`@^Vj+0H4_6N9MlJHgde zs;To5F%0vG`7(`d#0JWI8M-Wy#=nL=k;Z=xdr*-Qp*omIX$KD(k zy%#%b6#3z~Mi*d@M*oBz8Xdt7jiT*SZSr|$`3N3DDO`xD-h;ytQ~eXz6I1;b?0Lx!b#E_*seTuZ2gZ21GGeNK-j!ymPvzkaFx3;YZj*~4 z3RdvM({15ey%1CVd6{O3ryZ+rj;H-$*P|zS+NG#Y@w9&*pAt{|G3<$_y$E~aY1f|Q zY5!F16HomS9FchHzeMe)dFnH%{YhfkO>V`f#8Y33J@M3opPu8X&;3l={|v7GeEs_Z zXfXyvh#Z~p)S$W*Pn|k6Iu&If8cnB$5W=j0R}muj-S8QVDYS_^N+-t@wMp#0o6x<# ziai>A9Xm9d#14&4{(DR@O5S=^3Hk9qF{UoW9?fUcIxQbS4@-8UN7?lx!Jec+b&!M@ zYo$TeL2@klLwsz2AZy27yuIyFb^={)+zaqc&kpr8d`K zM{SbINp0SUJ=)xa9on>Dhc@F=ZGLL*eInE6xc7ff0xZqF4}Ie#_x=z*Chq;;V^7@s z(3Uvv{a&8@_{8#yxc@(8`{&b0E~tm1c~UKxQzoJfaCdOp0okvcQ*@j6yC76g>IGAs z>od?vY%VTo12PWWj-xlDRX6sOabOAd$T;wG>_nuiZeScPJoB`kFZzFCHS<4zmH+cC zp0CedP&R$S-g5(b&nlj6^*WxGw*Ead!9gC>PC`6QLCJVs~DIp@PfLHsTAR}2oNBGtr*nnurpOU`A12x;3D67D1wdZQ8G z4@Br-BNK|0sKTNy6-%_hM{o#9V}{mkHo@! zIW#m1#`Q_BNuxrtLm}wC;93tNA%g-q$BBr^$iPycj*gr<3XUN(!ifc=JCM{cqf@{X z5=RQeMjyP~2)K(Uk)d6|fVNMl(n+ldis1a-gj|_A5jq_qIMNd?18nF3sKK0`LjDM_ zp#dORE8qRfKE-+>YB5l9ms#0G`qu4OL0rv<@%eP$x`t=BFTN=BK4f9; zg@F0ExS+cjxYi4U?qMY?yeK@qyZEA@@~|`(UK9%6t-E+^yX+*kowHr$UJP#CU3_t% z^e$KK#o*1|#TNx8hfYvwWj~dSBhe;AE&`LSIt`QU)}UXWhPSp~0B;SY#BmW=YSn32YIp9%;iUCv z;-sPbI4%MMtvU?@?be(DSH6AX;@)*-NoX7 zr(wX*OdS`2@l~CM@lB5%F~*LVH+IClv6DteoR7u)Vxt7@XvNNJ#m;NRjuC3d2(|M@ zsGT=L*~z#|-qqFZL;Cl=zMva`VV7Kjh^;d7LA2VfMurx-OoZuJ zgy8u&+LxqQnHUJwjEqd1o<0|;Nr@52G-`aFUQaaQ4%My`Vw={!X0DsYSI@*9s>2=B@jtv1Y1P;jt!LmAd9kOW|=bpi7=~mW}6MP=(-FfY->?L>jQrY5^&*uCx76w za`eEZ6~%dQdKX)>3qf^I>d4APnuQh>&Iq`d1Swd;}t`Bdk$~jym<@9&AEI3{vYL5 zMB`FxetvOPO-Z&DnaZ=WY$k0^X=N2MO;y0$(4x_2)y$udgE)tHD(3AuxaZC1 zpZVF(e*WiehdM^Nc(@SrJy%9Fh*SXhRwN3TW-JtlL=vqMJg6w3;_h6qu%d^vBBf4? zOb#HF$ix_wAzA@yw;U*j45Sv3q5HvYjirHDPW1V$5@_ETk3x6uq)aN40{D#tOaOu= z@MMA$xFv`z1Bn>?$r&OkVePq0NXWVoPXc|9p9546N3&ZaO1CbM$OYkmKkQPc#s_?H zfH-j=az~?e5%*n6Z3JZ;;TOEtIeqnMJk_UpPxS@fQ>AQVzra&{hWAwYQK-&fQ~{Fp z;yKs;$L&|Gy~;VOzOFbsyV#LmlBw57$M)^pv;SyU|1jdiMn^o}*zl3f$NUpfKt7@q z0|=2B(5Y;Q6Se82SVKwS4stn3OIMgpGJoIjz(^39cQm~D{Y{&|-b#hgvfy#@4t%tO zy2?AAD8r9FMIHD2R4A%m3COBMqRlF)u4^$Exqzeu~@3qTOGyaGiD(qb)Hi$1VUxb`~^#vELkvrPJKf|lkBpE zNR77evZe;Nqd410fP(y4%Wk;-KkvI^Mf2rN*(Qa?U@2L0%epHoR^RiDh0J%r#n)Ey zzrOm_uiky_tcr#utM0j`a{cGfYd^RCfkz&BC;S&a80c=U3Lv!%5GptIT%`_Z;dEwmKuD$G2}he0cxf_A$`4Fk#PN`~L0kzxd2E z&;0hqO-DvCguVTTcD?n?GfzGBDnI)4{f&5b8{dCV1m^blpwoQGOeW4N39=G_ z-hw<|mF7{%lyZ?ysL&)EHEWq{0eRB|u^L5sDCu)dZm93gm|qL10MS z$f(VkRx`14)A~3P!^pr)OtB^+bZ8K1$kd47140Hy014JTeOzt>?0OVEy}caeDRyor zq!f{DQ1TY3&likG14)b$SQH>86b5S)c8Z>1A8vg@qy>Q=M4l-Pb0K~ZsobjKfN#j8 zWHMQpg)WyN8W<9md!61qIpI1jA-uEm= zD#?WTMOIN&R#;Fv2cvKHB}%Ux5?}Q*5I7I+XiSQ;ON;Dwdr@iSj2Sa3VOMskK@+5w zXV=VzgrmUIOP6Libi*7>vvV3|R902Zl%*wODR=++JMOq+{rwLw1Uo7IG!I|9403wewKpNw>?YGI1jZ<x0e1mYn&lUGKz?v!mDYbOCa(NA_&ODP)z`^xRuf`#bs znEK%sWy?#!?!ua9Vzxt+#!^b1&B^^wxAH#XY9q%GHp{RfB?Hw=+7!}ep{p&uexX+Q zUQmAi#tV7JTA6N~tH27F7ItGmHf(5NKg4CNpw~K}w6H_=7TVndlvet>&UY_mxR+;g z%A9#Gts1r$X7M`K#;_STva{)~4KlC571kmEeFg5QEjN8HEx6!M*5;W}9+@Jx4{g@7 z^>|WE>?&%rmwAqBQ^vLF$mA^NGf%QPo$u*gn3+pM&!~L#o{P(%q~qFdVJcFF(inHS#r=hk;NzT2@udoNTPEcFrsrDTujUT`bA7N+h)qJX<4 zZBKmnyFdBCt__-vv@}6(w}XfK`w%2Z6o@YQ7?v*)xDMFJ2JH|u2$c5ru2gDh2)uq0LDp0 zw57l@Xe97h;Q$Ju7_0^GYw0NAGgm-jkDtjY2UfXFUeZ0GIexK)^-?w?^*8pj_ z$}VO;w~l2_dR-S!&n(Q$R8p+7T4|&xjQLc!$B#_qNC%%xPJ&%^bVw!(_8i^`v)+eW zKIjHPx1yn;u@T*sN~;NLL3rsn51&w~(pnrSxtT5n)Q?F9OUP@wqV7)qmx_yqVvWidgBM%J&M8wE0IL?^0Fj`l}jvAnsalttwNAoe&cfH1?FAm zHRdnO<2o=&;jQWN`NgmyyvF_gmT41x`71Zi(6=E^6O4dTkOv@=j%pNY4cf_8B_fn2 zCj9vCo1AbfxuscplX7KeVUb3zQ8|8se^UiBKHd{#{qc|g{nAUpmtOkgQ&0Znr@#2k z@1FhRAD@2uXFvVPPk!>u;~NazTK4pfz-7;yj!~kJlk`y$ltM=bX9O$AL-MYD#9F*( z7lSn?^AM~B5kV3KKSA~+`YBmOK`u?rG2|%5C%8Z^2#*ep zkBObcvT@4?n>TG@wr+iI<7QZbw{G0Hdo$kH^r(h+-Bfka*kTJ9hILH$UABnVcfWGNBt|1!W)21fh%vAhFxa`wunwC6 zPJN>u)H1on#oA)VSEsR zKNZJ}B~ri&pfj+^=l=Z9ZTp2q&9I>@D3Kl8v++fEaGjHJsamf>N8*Z1BIFPkAZ=x$ zaoi+@H0JZCU<%^ihCM6&J)ux(wkRW$N~IILJFv`$!(Z^(fPr1*-4&`n~ok*>qtJ|CGAeZKC)>CVG#gZP~O z_Yolj2wU+pH(dh9&(O-S8w5CIHvkzJBp_gm#ZynpQ?V%c1L=YPl*AMJb0+mWCiMgQ zp48={>wl7172I^hC+T31F{zhe3S+;Am^!go!;17|<%C5Mom_{2OcZ={a)+v(yAlxECX;Ot-EC}w zZDmp$=sMg$*kFag$<2H_)`II!`SMuDx@litJv7sL$jy45+`MsGZsz82=g+2}Aa~j) zpDeQ9>Gh1WrhZ0EK2b**GgMOGqu@$ZWf+M}D!+DSeJ!$3`BLa1V2!e7QADsQ%c?_y z@{Ej>*B|ohwNCW%Op_5`0R0)dnL)0zSn)NhMT^Xn1J# zG@~gq^9wWu1^G4u(sd&iQEA}Bs)+RrgJbkl2@SlnxOjDupG0Rh+MCmNkd;ExL4I?+pSzJnlZ5v;A&57)`4=6NWMaCIah85V5)1{eXv1x} zqXax z7Kv;GGgAZZM)W!O0yv~)GJH?1)=Hg|5v9dUs|HA3nauA)N=n?ec$9(26++w!Rp4BT zPs%a*L!?5dC!#ZuS|Pg};BX3&O(2I=oFH__;tQr8NF!)2Pz~gWWi>yXO| zrF9lLOo<68LBvcjdJ`58CjeqSx@?J+KC4zKj22E-f+?N&@2zID1@nkXJ|%_0JfzXMbH@7)9)#Yt@8H4y@&5K5JCH+S z&(59g16=lqK2G@2@aJS9xN0B+9?L1T=Q|3EiVE}d^9rlWD$0wCii*q1%c{r?RV3xU z&V7@UdoGfskL5`94(>M&hfb=?EKmQYEK_^hZ!pjEe&c{ZL7|7q@ea`o%&b!)pA!uB zid=XVONxq0DNki?MKySlxU(sB0@+{ax6D9 z4D)5)^?rkQy(if@?&ht?zC10RKM6U9%oG@~6pDgjaoLjA@WJiyK(d5bCD;EUGg|#bWHm; zM#ta&w*Aw+Sh4K=bo<|GYR-4tFmP?%=WE2*R}IYpH$q!W3mBK+RTzcl5a;&?u7_Jt zXgWGjS0PD19yAA}GA2m~0${;Gf zN4Ni%~!R zMYPTwM*VnBR1P;P37Bhx`eBIk_9orWUE#!yfo@Z?g;9~6%Fxg z0rnBV<+)(+j{){Eh8VbZU>|irbcWagZ(vgsIECxapT9KNhZyGLO2Iy$ED0Ob7oDKu z-~gYUET9bm78Yjm@xVT`Wc9^A`ful;h>^O0{{ZP2zO1f-t%FM@5j8f{2iV79gZBAB z%|x)@1OSek@B;Aj>HjYiUEvzFtr$;aJfAU=BZM(}1K#I0yevwo{0i??NU5BLFOX8% zf)k(?!f*<_(vdeR_Ed{Yy^@?b51}bHH=5m{!hj zFmEH;Av1^VW!M`^ha(ThEAQfUvq&o!%Igt$q|_noLU=P`*}G8Q-F!C3wtUUn8Md&D z#meLM%~w*|SkW98mnQ9}+GQ0}?XvD>@2AL$gG13AM#|M^;gkahlEOD!;+3pA#AqOL z(QHDprZMM)JT7Rvo9Y#lLamrsh*m_sPBMRh zc&WnNT?uGhTqtniFtIwraNQB4x+5BZU zxvl0lhfk?v%DFJ7M&oq)mAZr&gQm61;?yX-c9VK#P|(T;?znmJJ&(*m?BUPVc5}lC zkRXKtrYOu35@NCVv|&@Sql0Vex-B6ZSHCIT?)Te4$?mcYn7jQ9!oLt)1}Kv1AYfS! z0=XM`tIh$OP2n1eL=&V_EA<9rIHDfh3=)5#(N+f`T{j4f^vIG`A(mHZ3P)hv0AlaV z2*PUzwVwy>Fgp;akV}jeJf{N^ryou=xPm}|ZVHD%pzXxT(`Ue4Ujr`~+!{73V8H-8 z5lkjr1}ZFL1htGIC^&Q|>LCGb9=&0-{li4Ip9Hjj0@^=b)cy&g_J@LQ>1;%dY-6WI z&m7^jjr%}Yw6D<#GpEy}q=-N`U8RZvUX!HZLlnVDNu++uW#odB$(r=}`fyonVXTDF zTP%nzL@-*H*=%7>a#|J)6NnBbyQh-Ak zYXqG$X4o+Nh3XSxMvQZM|x2V=93%`!e$p z^BHrT`G)zFd5<~FoMF0{0o6!fCpeQ-ac>{)^~2|p-k&b+{m54G*etz0pnLT>Z2f&B zqoIeZP7sZT;ZZSs7Dh+9cyu6#9l<`KVZe2T%|19}WVD3gPNLB=JZgr|!stmCj~-$t z2Tl38n&T%<9eY4T`W{djXB2nKfM&Bz&-`5K*(o54yoW7g*t4$^n7PHtsz9bl^n&aO zGp>hLhnFdDEUo3@7*v$!V|v)`No)mzP-n1r()7NE`BzNu6ojgT+JY1h7kzskX@)~< zQqn2ZqS-|u>fcvVs-P=DZ77D?u-3$C?`9vO5{A{KU_o69Rk1zvtsNw)L*-J;+NE-M z$BVP8uI5l44)@UERXPaKd_pv;nX3-8=apznVjcJ5_6%rC1A?~17P9wJ1uoQ^*D=!=4j*&4AErdW2rnXl8@(I222Gxn4Tf`@2}z zWmqNxy~Zo_n(!IyMylq%pBt1ZW#eGV+fn;&upro)?lv_wEv!j2Y z61|65H_8Qh83cxb)dX7lW3==dkwo}PBoY3Yq+mWsk~3eFjq3ZKiCTJA2{rYw2W$9J zIOEGe)PnFf0$;)5j{qN5i4Yu$S!5Y!l>~S&+*BmSfujsWWqn=9#pxaxKy)y)O|QKJ zNpda7NF=(ou5&gQGA*1Ir@6nqr6og&l-!Qy*5;NbAyuNj7S4zIT0mZ(IMLD3RCn&= zkt3%Xo2{l0RG0De^z@8wIR{hv{^PB|wNuOne0Wr}z??+cN0mxl-uI zp(#lT2oXezAOZv^au8d15ak_fgQJoVE|`oqVmgjk_;^0$Hh1)CJCmm!E0jG%1R zs8|X~j1KU%no5-jfeVX{jY~+TTMuo?aLvQTFKj|7NeS_(2scZPjfO+tq=J#z1`itUESTC9r-#L z8L;MI{kVZtR&2E* zRuO^fdLe1sFQLqF)LkOS;)qfakOYlzWMnLW6Ut^q93Vy9fMh5rSdZ0DRVnI*xJ|+n z05=zH6u9g`P`waqiO={6eT#d!$<098rXG0DI73gxAN~zbt zolCwGRClE6_$YjbR=^sM{Jw$K!CMu6gdQ)%2};ScgI1T*n`ihc6+{Sa3}1~SG1Ze5 zKLL1qwvU$c3WG(4j)S1X6+>I*eIM37;wj*dkzNubP&=MMFT(MXvq z(GNtnFw9DKV^+E!t#^@r2Xh#vu}Qv5mZ}iVAyn$sSgP!ovsAfE>@)+4y(X4%8I)7_ z>Bw6}e!3$#lb`N7oZ+W4;{-n)v=j2v0bu-^lo^EEq0HNHqB7x563WcO8D+kS6Urn9 zBFc1#$`pIduFC7ca)7}PV5k2YXTnZz#F?&VBlmA&4G+P;m8=Z>PfGjY*)g6g}K_4Lr1a4V~CAy4eq(f%ZE zXK~r%dUxQ*B9~wQ;~4%>LY}3*Lq5VAaRvq~S?+-WOL(mCDdF_}dlWEWk!?tLtebEm zJk~Qf6CUdtoZTEL^hm*E(r`jgK--VBvQ}i}xGFSl9d4xHwjx|jK;(aoF3kd-bqX%| znF5~mDKu_vBdyl9vhDjp6o>Oy=w8R6Y|}dC;`e-2Ptb$zML^l5=wDA#@dpJ&>jGd) z`>jGJdl^5?MK1$@G`p&p5ORT0kA9Xt{I03|@7w}LyzC$<_uqu~{T|9?rS!&Glvl=A z&`b9>qsUIY^^b5)#cR*PIZW^+j<&$}!laGH4FybGEM$f;aYLy58T2Ur6ZkP<;=Y12 zVd943+$lsH1j@hM_#U^nW1#&{lAhnkuXwffR4^sXt>|61ipJNiqWSPPNU(KfqwA^F zqV-f>Y;0^)OiBXf(}gOnCrm!=t^TN={}7B600z%1c3Q)f<$*CVb|hRmLLhxtt;p?*};#{|b`O)My$ z3re1#*zCf>!tB@}i7AhiEe44qSSm$j7B1gdl9xJp5#lp%y>Zc!8?j|XK;dabfb>XRrXRS^n(2m%X{n5gtZe`)vQ$2t)mP|G_W5_+mfvI}Qk_V6}sm54KZ-lo}H&PYKa=W7TDn$Qf4^94_*J zWkQW!Cbp62MZJs|iPRU(m1lf2(h%Q3HW+scr6a{EMxu6%CW9QJo0sJ{sx>hQsT zil5E=7Lw#CZkyzd({&t@&9|}6=qgMq+aw;M014p&@!7w_ll-TszrP}SlE2|eUci(5 zLDc785Isq$uNN%PR(OlBo&uFA>v7u1@ifS){5@@h<~}$2tK1L^@E_TcV+WDYz3)WR zsX9wgdS(i!*^LUF&)R$fFb^lsw>3d3$-phx)N2ZLTly`)Wdle?W2@VhI5k$rn}9Ft z^Jvnh&M4v%Ba>nzgZ2B7TDbGGue-HOXOBGu%kd~_Z~NH;d-v=ymCjkde*O9z=ai)D z<#@25nDopU3(0y6S8B% zBV%LpC`q+w+T`rCq^Qg|Efz%x%FmgcpI=aHV(y*KY#HJt+{)a`{Cnw-7iWfqhQ;NT zFTdwWY!BRj-#xc4yKZ_$91I6YEi~HgQJe00;NgcKURP03K67f`gp72U3Z~3oeB;_X z?!EWkO$>ah|H162WbWka9jQZ#4LG7R0>Q)eZFMMa0Is&bG>7oR!fx_Lca zW%F`U({uCY6VBF(r3>cFESNB7Mg~j|iFsv<7cX3}WR+pE-{1n37CoXzR= z%R==&*6$wZ9K>f^Z}X`G`@T8tb@(u*BtY{+9;4G~ngAMQeR@~ zFh=4vMn%9-LOj7bwL;6K=wU-a1(VZ~CQO`|othAiA83KX6c$BdJ34g=f|-!@0s?Q7 z%;!eNNp+E0HW-tU8l{Da0jWJ|tp?fqR)>f6vvNaZ5RzlGp$Xa3rWa-+3l6Jzz*qsF z4nfeS(kMa-3`Znvb_{ZH086c7rSP!^8$-3gHPjmrpB)k!5o1s&DANwF*%%fX8JC=v zmK=+)Or1gp{Am?xstz(n0gfNRk4_(M>l(C67&xt+PKneR79SU?q6IR66#|wfT!OE0 ztqYc;8F`sDJTW6JUPh2n0JX*d^m}0`F_p%I;ERwLheU(aQ5Zu!F0-4AVbKvfsa&T= zPee>;s3BaV0mma*u;Sul<5IJ7ax&u4vMP_x%j1u*`BY(W0b|+kW7WfLmJ_78u+7wt z0g1P_$ID9;K}Iz>pmmX{6Z0o$%5>@~l}w4`B0R+qQdKS_QLac5<%%RxE+kPdBvGzN z5{WS?E5nQqFB&sQt*<=|3Dm~}ozlToh8)w^5`#!f0JOx2oq+74Jws3kK5(- zNR^z@>vINY<|gY+MvF%+MTj&&y{#^*)!KUe&^hS*l_AO?W3W!{bil8!(m7h1VAVGI zyebx05*F(~cOSre>W>_5!V;uXsRBP9EAzWJrHl8Q>&~@1OvYffF&ILZex^oq57wXR zB_v2Ck7Q!0M&jm_K839BTrH4J11qNrw0ec8)hk4;UV&DxK&#IawR(j}{#Pa&S+5Gs z9-*&23$DVGjxZU*&^0k}p;CWGheN4F7YUaf`sVAS&4ayO^?=Reb@gBxfRwLNx@`_5 z2Zn1+DLQ-8*=D>Et0gZtJ3To$ecF78ruoyRPsz;8n~;^0h{(Hec1lish(1iG4b7dL zH>GUm5ayQBWp!9tL$Jz}qPG(M9B?<*tr2E?<7<=J{B@hqKET z&YqGI6B;>T$;vgW3F}JWYgfWHT{yQiCkVIk_tboj_xR}tAH4teYp=cb(r;+{<8NO1 z@Pl`D>^RFtBJfWoaY%GJ#@g4zX;`I3J&ZS{bXvV(sgtroO(}yOYhOPMs>nEWc#%tX z?htZRYW5#IaH`AN+k0~NVZ;rF`{f?HTdt1@k<0xEuclxR1bS2pgh+4!1YwNeL`fwws@gqM3Veeoo$Frz( zvd+fZ29Wg8>Q9dT@?E`wWEZKXl^hP`ba;slZaNs~5Wx-kZIZs1KNr?7*k9P>Y<4Qc zE-q((!myvbM6T9uH|$U3KlzYhbrI~AA-lz8N+S!{INoEJ*dox)x3IB=Y%@@*%Gh#p zk~N^0Y+;WB3zuR0poueVM>4x3P~v~04Sy>dbH5jjxgVp%7n0=6@5@Hl8QVl-ZXyX^ zuZFY=iKGF9!gUU>1TtOXwE=a*<|cEt%Uyf6zV3W`Pmf1Z6=msaId}Xp!Hsn^VLfuD zYoN91%$c)i&zb;)s8Dn?4>BH@e37r=S1Pnx#%+ZoXV5LtGJKRyE@j-F!9k?MH#VA` zZaMTOjc=f(9W=%i-Q^_PFVY}+x7(Bg;YkSv=viSQ@rh9IVuwgQHF!P^`5{;?o$^O@ z%HY%}$^h1AC?P5c!2r5o{H+E?_rPYFjA`En%Q8)IQkdX*k4>1#@MGk!YZ)p29@D*s zZioLGxzrR6?~gthS*cnT+*Eib9<{^wrId>w9iM;)N{CHKPs4_}A8s7{C9)zsgoNpF z(>x^cDib5L5SvQ5E-WHaj?`@xen+Ec4M^ssdjby{Lwb<1(m~vyko&n}$DmMasEwh3 zSYs4;uwY{dY9e3>=mFt?$Iu07z%hZwgKr8OGW!8vD>r3MK;_744?hRp9ks=bicPSk z)A#VZ30|5BeFObKjcaahZ1hW9cKBtiW^-42V?#qzTi4(~ckAi;_U?XA7)%IODg6jm zbMYG9Zt-eWasc&^ncoBCAg{;P&%#wD2Xn-f$-*0<1{S<5qs7xV^wsD_je|#;tds{x z8^DjDRZ09v{z3y9QEh`z*)W<4=v5j+BMo7}$i$u8@5I~(EM1L~wfD0cz03yu6(sUg zC83!s6u2dTezEaDW&s&RDTEg`@|?i&gfJ4ILm-w&Xm9)(K4XLH#0}&mht)=CMCd7) zbp{8mHajjfc83k3ltzKul!=9*9}pG@;xC`|lsYM+EFdCq!jq#KB2TmgLv%tFpIAijd z@LrVl(@FF!f@g+W6GZ?=mE2~u;qAazg*;<&w*Dg9RxZ z^&7hW;2@RhmC;WllZSI?FBd^TjDcFrLYIyp!21&_S1Gl{l3vFqvWN^A&|u1`WJ~FK z-)_u2Fsb4)<`m{14gd?4(%@Lqs#py|8KprJF&Tj&DKO_YfQj zX6Sjmv!RVtvL!Nl9ycb7z(d5m2(=*aXj%`Z_Mzv|L}G@nWTnG+?v&kpsfed5o3mWP z99f*rPD5NlIlGePtdnS#Eo`081Ku$p37Yjr496CK{}NTgEIFf)N{lWGlz2{o ziimk5|VW`$^$Tq2q!7hslLgI=&gG)pepFcQ7Na0Yd>Mgx)?n;o;I3q}}D z+jqY1e4{XXs@2uDkRmqmh*jn_t3=1R&zj3 zzy_3lY*H?UT>feu#Gdel!2iShf`YN~)0!&7WdcIK4@eU<-O&aqz;6M9zd?g}Pzv@S zb_ykzPHlQVD4lSRI~-7F9axlO1?cm+P1$x2N(-RX2+%!PxWYB>Lo@+4{2@5I zN%~7!toXBWk0H;wP-VzSlI6f95^5}aKM4Ua07RkA!=4M(#eX(41`|K#wMAn7jG z&#yqPVifs=k(H87j#hg)yM$p6zQpckSgkOw1`TW}!)8Vx8{!(3rxV6iS|ODuDWmfC z{)Wm67Dkm{M&(UT9xm@@jH+8iqv}4#(4o+dUw$-_`>MAXdb?*T5 z)ouh0nX)FNrKV4q0z|nf6Vibm103x5)vK{ETYBA;36TJEvrD2TOu2r|U3X#qQO!mB zLz7cdQnDu(l$4ZApPFA-I=5hE+4O=b$w5_GeR6K;s*M{ruDM}KyeYI|PFZ=yDuB1G zs+c#cATKX(a^XDYH_X4oR7(36-6N|j^3*6moma8?nYqk=0`l$6$};$KqrLI4#}|}c zzXaIut8QFz%clEQZP>JK)s2ObRnqXn>(`evmGB|a{xivA%O;z$_kDfdr!o+-Nr=kT zi-4x~c9{B`n)+p7;b9<+h%xHbDp&KNeSkf!G)VnuJC`u5?0x-q)+A%yERdK20_^;KTrKiefduOlEbPG;*+>VUx=xep7bMsgoy=J$~T8 z(PKvse7%phy|jJt$)|e`0cq~o$y3L^!IK_j-oul+B~XQRaw1TWYW4J_K5uWAb>vBb z_A)%vJ%#@IFQWeXs;Iv{g#P*v`s-7o{`#z_zm`ycwKbu?*1DX$jI|FU3~kr0&jBI) z`SF3KRo734O4%7}CF(@_$ zz&5fftqVa;BV9TSzM$l^i9(m2TD}z4j8$uITZaDi2j+J$ssEn&BhJ5P{suzd-NODM zuK&pVBI22cA9(7C`)?@;^m{fUZBqG-x7>n$|1y{44@pA5&zhJI`*YcKb4yBR6;3Xm zoL@AlUb`B!28HJ;%w3|9G!pYcE) zL%cUs({Oe&TOsUIaIImwnM2G!upegjGoLWO)ou!m8CCY2l|P!x`~o%kU1b>?&Lw$c z^8;fB1>Jf7eYf9z=PgUuFIll>@v>n|@gR>sEbj-a3c$t3k2Q))8k?O#At4wo5yoJq zAKsR(?vCb$vuDqrKYob915cbgS=WN-wDadX?3(aU0+WI%nAtA$D;$@^& zM!8Dr^4qNvHYgq(d&Bk_A$oBu6nifL;COx2CGURl;Xl5rLH|Fx`-{(sTH*7ZyY}us za^#zDjve?I891Nf=R473AjJ0X`EvhB{N{-R`*wZ&-n;L@KMa*jQYDcwzA7V(v`UFa z=jR8TyBR<6$B-pQN-K!1QXda*6&4G!>XKu}&z^5>#rSK+y8P7fnwld=jvWRD`wkwfIbGM-(ngd!7^wBf02u_v)+7*)U{f&A7hDb(qgLp25{a|d zBB7-Txas&Rr5F4{01cE@X|e2~wUd{HZ^jh&(T-gQkDowaK6q^Z7oTk3zWuE?-+BAJ zk3ZhN{eu^|a{e*?VPXGaOyw{B@Yh#f*}nagFTei!=y42QWO;n^@f)wd%WxPJ!jeb9 z&^pXI;1bmtfq+opU@@XPgA_yx_nlC01ZGwTX1g^Q&1*%YdF_VL7^l_H=~gGnnKh!( zyhb#d^@9{x3cedi)}BE}RjhNc2j0CNW=zvBm+7|k!;sN$b2H7&y*7bG5}pKR42y7X zavT<}amne3rA$vEV93Oz6hvjhFgcc`n9Bro8UDZk>J#`MAXW+bL}y^eFd)arL46Uz z-$*wR6cjoRZIZZ|Q)aF#ojG&v`~~v`Q?uC6TwWO)nid*mM9P&RiY(3-*qfQSSlkiz za|F~4-*5CRiT!xj$1lD8`UgA4uu8vFY3Oc(4%lU7Mr_lnVcYcZeMyrNOcTOlb@p)py%VKlkuLB6(Sn@@2~_<{ z*vKD8uYFw9YabWQL62h&dK`1mk3_xpaZ#@=cKI=0{WQ(=fy4e)WVz;>Po ztCQaagA?3KYO~qlCm1rB-(eotre2(#4&^I7o2HYz)J)2G*^pac%I$<+G+vojR+05wy2O<#XUcol|~2n18On65D*9QW+YZl#`Q_ z6dkHeOho83OoVIX+PE{gwC%lAvCKo(IDY?gp})2?Nn?vyJ0Jm?{{y zum;2s4(P2|7^2?pEAcHP5h|z+&5GjOP_hV6Mp!Xina`mB4$^<#MpALSw@u39y5ERSK- zfdha2>lpGG!5x^?F`14?=TXlg>cg^Qdk-V1R|Ev_g&xExgMsK!zU@UE;B*N|NeN@g zRCvp!(y;{Sc}@q(ka%fnNo>7KMQ>}V=xr^6v?R9P#Ug3BRP?qo)aw5J@g-vj7ai8u z7dEaG%wXB_^6@3!bzJo1`ST}_E8Q|Qn!D~AUy?n{MVH)hN6ENSE920imtP)VLcPJ6 z#&z6$#_p zO~$f-UX(KkJ59g>>dR(l!9!QhuD;j;de{JaG=9$vQ}9siZPL|QUB6vszy=yD*g!pH zfilH5P#b6usmySgdq?Aa#gSs-Y&x=q>oA%wWecyAx}so=LXKQWv|tIJRsw5tUjb8& zh0E$YaDA#lu!Ng&2?G%V5LniT>m7rFDO{$(b$5$k3Re!r3sCg!c+aC1jc##vU!_zP z0%H}PCpbp1gio7|0z69uOZe&^;d<{8!4gi-<5R&BE<6thlbQ^dG8Mj#??cld&OTt7 zznryhtX^KPxqc30hh3|F7w7}og;XMtMudJR?gMYg1co0; z=tv(}hc;g$lBjD%5_KK=z&iASb)q(3Cz7bS02()fs2*hRQkRRufi&=tLH!d*Jl5Qq%~dIhE&|pm zIj2;>N<}VOE)4W5-;TS^H)wZa+11zE2g=tzQu*53I=g$un%E6ok`LZf@{__SAUGrii#yEtV@>wCaj^-> zDalC*l&y$l!_bgm0|l%_j->!Za7k!jm>Cs-V-6uKX*I&$2*8;TzQ47E60F?cYXx=b z9z1^ZQC@vROM825?TLeX_te(b96wcCU*Fc=+;DDO-J$r>oqPOfr97CXi@|bQRyJo& zNy*$fWo4zMGx6Q5adnL1OZEKm^^P(wZ^eq`H^N?c^GaMSU$X|Zytgc0v3$jfadna6 zOOJ~2qoI-rmL1u~ZS5TK4FypH-2f4hF;R6r*@bCdK5g2{PiK=UaPlYyDDN$?i;30|## z8ZbZNJK2b?^nFW=ilGwo3aP}PvOtL)g15Ls@N0cSF;ythGBQhk-x33LOv`5Xj$Ow+ z2KL7P9d*nsq!P!f<7cu!iKBI-%pbW(6OfBE0m9;-%s%K84D&f$2Ey--`oyKaW@^7G zfMem1PKR!8i&PqqgeYA1(V=lj>onqTjiPdlqH>HV$B1%_qH>HPjYHYOH0^1zG@mdj z*_M4Rr`v7qCS?Q@nHP!ZdLUWF=Eudx#mAYHnM~I5EQELByS!BsCr`|sXi{1kYr7S* zt4X2< z5<}(CKjgd)u?jkV5Q!Iqvd~xrwS|Xvb~cwZH=7Y{AS77JWqfl7@)!(=1C}|#5)M*0 zRYF!~CRToZ7Kh8L!{RKX9_vVq?vX=j)F)T71=|sUbetqpVg-W>zjtlc!==r%j$xFk`{3o9=(~ z(eioo7cN_I%evLe7njc}TsnJFPEPinNNBoa&9d^D0>AguPdo++@CWZ+jpR!%OcoNK zo|QW_BRO?K=HzK`Vdcbza-{~HQo?}80=(0~$UY*D=h16mxJSe%#YeM>h>S_d_Q=mp zj0z0{5rotOH=tkxlsnxlViY-vLaXMCxw#Xk;LiEkNip7DyGM!eN13ELbw->UYu+An z*POW(sPL?*#f2H*4|?jUr+>6*$rBIWe*5hYKCuh|t-liXDtPN&0OlC&FW~xBAdb=g zs(SeirARuNl)m|)xdGpv>e&bHTD@%fs`X$q`yKN-0LgYTJEadk{K!-Dm}=%Z_`qL) z?|Pf`*&p7q8j$I-dzV$rpEsX*nRx~K-v`%8?8 z{Sm~=YiK!T+~is1*RLoono%}q>CG_uR^%mcrO`&MjOpw1$n17^-c8^{gjZtZn z3MOT->a^L5*R5T%V*b?3_{8*-M7h)4LoV~yF8QFH)rA>3i7F_FGhToFqUE^rlCo*p z?&f}%HcaOpa8$<~ZDL>^#)eQz#Kd@-YIeWzr$7Dqw=cZ#(g)w%jJ%Z}@(&674{^Pj z-z4mm(=z7wAv+IINNn?Qn$wT&+Ohq`UoPi=#NWwp;8*j@_(lADzKk#B=knL_75okS zVtzTkzZF0IfwbzS_x}MdR?U{@|LxzN|JifT{ru;Z%lJq575LTbM|S$-vY~x0Zm_^A<1Su+E};DSX6o>*YC6MS+>cZShDX)ul?gl?H!H3w6Gp z9+zBhNS!=+5}5sRVzue1$;rux$jHvlo{*N3l$4Z`mVw;GjJ#BM#^S{2}L z>{&A?*8&SaWc~z!ffBwE3VG70!MseAD}W)yN)>Afpo_pSGkX30`=5RN%@-#SxlnWH z%U!#6?XT^1Sbg|Y7Wq09G3n~>G)qtJ{P2BFhD8qUrT~eUN+n}CHHBRwOABF|)ujrh zmzHt;Jrpi#NA!|Z0UjbE{?e*s85xF4RM(O^03roG-9Nl0(Gd0 zco=%a2$W(#nkI!mRT>n8@Gb`NUvj9?hg*%Vw39 zs3J3%w2L?8y(N2#~C zZ5HXN&p!MZHK&)3h!XNbBZdqi&m%8AFh5H$Kg&kvXIzi^o=FQJOmCTJeimy1Tafo( zy@g4@e;fX@_^-x)E&dC0KY1voitas@hhmE8-eTlco!cK36$~&>xJO*T*O$PY;`f7a z&lK6J!ulPHDh$-tAR9n*`ukNXkiwY&ni5!RVIeM)lgAyY!RRrj$S`myA+%i&+#;hA zFEA`L3<1gtrAa53lgE=~5zix6Bi#euQVc$o+7ua!zoBS&7y#mB(O|EOiN)X0-Fo`~ z!iv~ypV!`xa67OS_V>Y~?lS>F67NaE8OTHw3?DcQ0&2B3DA*KvzTsSLyB$iIe6RsA zC612z`iA;Whr|@=b0B8h(%%o0h|fn+6COw|z*?H*6wwFAEohH?LS+Q^ZFM9J81ONX z!wN**5MwTwG!Q}PHcFPq@Pt+R||@t*@P=x^Efk=EU*xw@#YZ#(C74g=an#yc%+P9?siuTeFGHJ zOwk4`R)$b{<2H=;yOboL@+N_=ZNsQun6P0~XJ@U}DvjS^>FY!&3|w|qD!c-?{cKDd z7j3uq3w-h&=00<;9Vs1VH{_wE_2d~-NU$JeC^7)D21ls`#2}1Z8<&(61XJ&y&pkf zUROWtehzd-FNTjEd5&233n8eGO*(WKpbL2s*3Zbi8VBM)y~tI;O}JnK1DsHb&xEkU zBeD{Mhe0^M)q_M2A`o<24M=PQJ`Uh~sYt;3szEV``4WGj2fz`z>=7OyC88`M2NqiT za@JrCTKZx=|DshcR+COdgKlBn)7d13P1?xLWAKuRY5i$@>uF@$5T&jRtUD#pn#cDF zP^sfEk_)98aevJXtdU_uZWY$LLaBFi5HFxZ1ilNaZ~+YtpF)5J5hz!V4t2S;AXb9- z`Dnko5XriUtLB&zI&7lDAv%Q6A%+gYT%hk>u8cr?UakzDZZ(|_8*!jk#APELlyp#W zLo27tl`n&U4E7FKyRZf|?0WUXhKAOzw%XkX zPBxgCPOcPst!EIf0sxAuy}0W!#GW3jM>vEVORKi}vuA4dW6`<$%WrCX>_j>n7Unp1 zrhBma9L#n#b?v9v+8z?CR!33@WRfX7K8&;~gwiQM%uXN~C|$x=75d!M3JRxBpO&4H zHhEUX{4$Edynfj&_dfRY6J_NK7B9Q$<{v!#)KgDAa@VRQ8`m$Klvy+*BQ%J4lq-ew zRT<;sQm4+zpEPmO#2K^kmy?pC<0Dh@W+I_KFQ39Ui)T!mm=+%$43*WGlAAN5w0wT~ z+_`g$vlESgd8kq$Tb2*wEiTrSTa;~-BKXebQ?9-FW>|PDrsgMT5x}pJ@f&Wt{jNJV zF2$nw{%3yt2;c!8nvXc;Um)!CW57}$WWHkWeRLVvvwn`X-wRk5z6xW+0b&0fq0heo zkoDiO1T-mczTw{c7G)-4m3NYZ&MFN{$v|9n$&~!!85JwB7@I!@8tu#l8#b(5xDXY` zcGJ@N(4s#TNF?zgTs>} zLXelP0dBy~KRx#-|E#e81joll_DA@8__bInLvJG~3 zJ7p}=AfR1f8|Z9l_3&6IF@RQ=Bdd`z7B4j@~$w6~mXrl1^if9L5_4Q;sSHp8-EvAU!>V^pZr(T6}C#IM%x{^x1d(pG!6 zsSEIy*bHvy*jkwfx>0Xya|29s`F^Csxsa~s9T>D)Z7z!&UKWKWBvwv2Q+Px|KExtH zfoV}lz_7G+b5YuGqXEsT1Og+{*Wg!jI$SmY>HAHkeQrO(?yYu9C(J;o1S@mn4(M>u zDUlAT(TByPXD3Afxe~%hQ%f%L<8Re zt}8=qO5U{G_z*Db@;p5J8jeenD0Ie{XbpVGtP?s5sV~7{24Q`Ghw`|5CM45>ii*H> zY+b!vWKc{bQGm$$p0%dn|>nUNq{(vhhOEn0iaul%ko}mCw87 z-Y1@T;@)d3DA(ZGRXSzqY{D#bWb9sX2#vhuJE5;PGd#hw%F)l0V)? zG<%bjozrcbuHv5;93AKdhNvPVtT=cARrdv`(bamwlaGD z+FNh9?uL~c=glS$^3_Z1_zOk$MH0K5dFgdmmUnf7R`e z%qxcClz;WoJpMv)evvevhkiqb13#H~kZ5oXMZ2(md=QfTL6KyCcvP|@Wk$g~2+97i zNU}dHlI%s@x=5wNYj&uBpn!#TSaf@58=N#|Yxl`6MHJK}u$A+??ab$rgh^>?*C66| zyBp6l5ZMa!r-&e}oXgs?XXoc<-AcW@zvcXi1LTA`-rUQBGG3*Tbssz1Z)rSq=umA( zXWL-4Iwd|jGDKrAs3lyE*V5B%PNA&06tLSnbWst|!@^=yC(T=V^YXBm)XeOhqWOTY zDa{3b8w{fW-T`SimqmJK@r=Bz94MiMbX_zlEk1^H(8#PQIWx*{sDKJOGbb@bR;`{s zIV(LjI6B%O<+5Gf$Pk-eR0Nm9lw`%AF)ITI3yFEfOCNalnMb2Cisvn;Sp7rj!gpN{ z4YC>~3IGTi)Ns|Rn^&*BZNYW(7A{=6g7n6f3yUY^#Nlx#T(@H3#)qGL7+T}H@~Lr( zYV`}ReRZm#p|RcK&Fn|xRAxsNde6+#;fR&C(J!eK{q+YL;d)!=(Ob^o#S%Ux*m0Whq zylImV&_8v`#0jYxIoT7kv$AplJC1LPW-%G!8m0r~Og~&hWEKlrpU>q&<03}PjnEKM zRwdvo_rgXt7LtrYG}^|uEp*c2{!tugiGm{(dVE0yz|c!^&nf zDTNhqgjRgVv0nuFDN?bjzLOwOZJv{rKV$y&3-2vwwjyVd_HAP6kaHE%Ve>`0(039P zi}{&+5f*tr1nAsmEDC4f^YA|Rno5zG9A^|ME*Q1nNu-oI2YNbN1_#Y97(V>=s~0eG zLBcrkG-6%kJBgdf3pI}KD14w;7{!Xkca%hml}|pi@uoW;0x_*&<$`(h=FRzzqG=_b zN2DnrS&`f*B#EzHPW=iJWYdOG`~3?WM(y`MPf{R-R?hrREI~Gm+V3SUsl18;<4mP6 z4s`bWWpX&f`}&+V7gm@O_&@r4V1Dp8E%3q)+JIVv4S}w3QDU=pK6Wtyl| zGMI)s$r;oFKRIo+=P~~f(MC&Gj|G3~bM>~IuRU|-OlyyO3uOJzG#&?{MPXsU3}Q-2 zW?v5N1grNvWfZVNo$~EXBsf1OZZs{Io%UQc@xMB4{$;qYS~oC`?FEkzYC{CK`5t z1oFP>bjG+4oCQCuk-h;XM~E^n7xWXt6ATp(fDGX|=-C8#AY5S1NAMzjp9{tkKb-Ob zT8#c4_t!)4XM5GcTYHb#H?o@EAVOC|K(28lJTZr)X}EE4CE$H<=oIh-0+WY96a+rtWx!Qrnmh@; zD)9Q~D`CU;fqsSyyhK2c;A`qtf)k4ISLL8U=pMK^C6dwuz;lFZdCA1ur73+qC za6VqE;_bMYLu^hF!J$NN9x8CAP@q#Nuv{o`B?`PYt=iv7H_UyMyn~bJJxcK&XX8D} z7}nlRSX)!0=y;cA80G5wzQ=x>P~w`Q65k1wi1$b(Duoiug%amos}fnE#P|v-F^JwH z&OgW63XRC}t;FnGm`bE34`<+7=&RS@JpyQrjW0q`Y|!SR0%r;ZI)wtug#uUNI#43{ z+*G33S|ggRub}6^r`Hds68T;8vAn>UO%c2xTLNzr0S$PY5Kg&KbbLgEqfpapQLb&M zTq1x7l=}`x<>H-Exrm!Vx#dE+^Db4c@~Z1gQx?@X6}AEJ3)6yqOW?I)VB)ocgKJVM zb)=tU;Cg7ZT-3^nt1T7MJy2#5mC0-l6giWIChruA6#DK@R^mF)lNh{L(K_y8IeS@7 z6L21=Q9>CPV2vmGmL7a2t_6fW6Mf5WoWQg|r12nHAgY&8D70kAuTL@F-?^r2fP!WX3VRW^eF|q{Z2@PDpSWZiIc5(|VD%vC znBBy=as@S2L*8DteL?C$bpfZxYMj=h&<1XZGv+mX0XC0FoIvJrD^B3@SdLR*)S#~4 znMtD=l_jc<%~ad};5&GFjgOXquS-%D3gb{t;gar zQJ0Nc2QJ{O*^O#{f*Yow-uF=P9|~M1#l&UuTjDbD+40jmPH_AbT;W^AfRE3dB97K&cr=p?n#+f*X zaQ^<1GeR2>iR-`~f(Rx&N((hP3$akfFQZoXzlHLwX!bKWPe;42#aV)e&lE|H@BF4? z0#sUs9P;p`s>e_JeM%Yc<&i|{0i6neYEO*`FIg~LBeD)JSi;KX z6nq}A4OatL0v1@bADS3V3X396Uf{2ys`v?g#R7=Z2mDpC)CTkv*qIo;Xe5rs_$6Lx zXhhOg@?{+~vX8lKbC|cVSSGd1#%-I+_>h-J)P)>=;y3dJ0(s#=Fnmeu&>Y%vF|P=! z!zNrju{0Ea^(SuIHCT5MS7#s8f%|9@1%o2=QeoYZOxnW&Vcqcxe%y_9#}SX^T@XXJtT2vD`q&IAnL=+w9%f8jdpok? zTP(bn2|_GFTtZuWJ5naV1mx=lVO(sSJ~%WiLWRCF(2|1Rvq%GX2pmDhqn5(#4%WFK zsn0LPdQpPDye-+dFtD`M03uA6*Y(9Ci#Zo0z8+7t2l_oMC z!NJp$m7F9jEcfRIO;}i2*$hO%AnCIpe^Ra~t*wrrG*34VdKKURj}dsqjW;e^x@_69 z6)SICy0D_6VnM}x#sshGPZ4fHd*!r;*56cCQalX^m5~NDI3pBFEuJwvRqggmh0HlM z;yjfRDQdL>X>)==Q>$UH+QyYe#7~$wrKo%x6`a8j%4M6BnJ7Jb40BQZgGT7G<-LH(OkoH-Y^4 z63NeEPVD*keWc_a>2xU~6Voy>(o$1WlAn3{sUQFN$8!;1T+MKbXC6n2?coF<>d-StUQ7I2U^rIg?c=x7<9(nW;e0uc0+wZvV$7RgF6g+ds z@-?n;T8G|>E;r^WQ-5onn zxi?>V`HeST`O6=E|EE9v`_HRQYlzZpWPb{Q$9EzD^k&h%lwZo?v=v%QWZ{-B1CfGf}o|aUy9~%xRLaS*fXou>8)bjd^JrWsx9Cc)WPcl z*M_ip{973oD{m9l|HSp8(SwLj6B>^2U2RBIbaG(J$eWDxa%?kZfH!Gc(e(Vh)L=u9 zTpnx)3DE_yG`AoqCQ${@S&h+qtl3F{v0z-M4M~iyeqD?aKj)OJN-Ogb?rS)O)2QGQ zQ$ifVXvt8Nv07nLqVE8(Rwb)q6>K#n1Uj*btU@+h06`wpo?NmOu7?&LK##oVWFT}QGr}VmV%q9wMuzV zguKHl)dU4;5e$Q=6xnfz=n0Mq*D}aemMDRWEkP0~&4@HLGN6+OKCs*4q)&*`LHIYh z?$jzo1H;8M47VyFznx5$1Z)DCl%`SK0f3J9UHY14W}2R{nM%Vn8aVMHVxxkz!BMeB zl~Qkv7IH%q5)#w%2s0U5VPOG9)=Zl+-1^bcXnl=Nqf(|ICsG%zQ5X{x=XxZ-X9BI9 zn#M$Mh+gWBNKXjHvMe{y`b5P8M<7kgU}PkMH#`}QSrGXkQTE#}po$(;Qw4$o!FLA* z24wC-??6}qk*wY+lGXJhS#5@_ejBp-J&~+_TQqZ(+FVkib;ge^YI?U!z0^6>`N6$jD?C3SW|H1aR-iiT6@y^40_Z~TYX4lt;kDont>g>65 zyZ6_e>q1r(Qa^Ynk=_iYe$*XC>c@$84`c6YYdd|q_SAtR6hycCtAnSTn%d3gvy=#O z81Tz==gg-M9zAnXQrqdM!t2Ld@?pBh>m`0*dnp-$+Nc zBJ@fMb8_;g&X`x6lN1*djKQOjBe5V#?yXX~(AYulen)lIv10Ut`|De+&SmpeSgE z_%QfR{qrD z8P`+d$b#aj)3dT?Q|8Emh09mneDmrxx88Q!@&yY8Cbm_p)~+m{zi{Pk53QeHFflt; zSEZ0>VsmqYkQHj{waNo2B*)M7%P~|VkvxXDpdTQO zG!enlaeRzu59LD$VHNb&t<&^*Ze&4y)u8_v}V^A>?_L zj6Qg`z+Vn&j$8yGp%F29+mQ1JY>cMXjyC8u9j!xYCEacHXU?@Etppo|h*&H(yVcy* z*4Zgg-ytGlptrMK*!udg3W@19_x26+5j^Zbe@{=p)zaH-cJ+33bpS3s0cE<}Y>>`} z3==F{?0ypTK0o~O5}ItPUe|-jWc3d1vW4QHb4|>L7)->q%q?0M3{*}5rZ%XnOtiK(yGCn zrI1jdsxm^aRm1;c1ER_%; zfN33+EE1Cf6iS%2q$UOAoZTk{6hfEX3#_}|0rODGiI24mI$5eWWVx_`o=QcFtiUG) z#lr+P;9Se)F_8CCg+_}tpjssb?mLMQ4T2|};CHWz1rq7y8}F5aiq zQ2TO`K9bC6aq1VslT+?GmQdWcT6rs0dPqSLB=R?q$Y(?n*&&k1pmD}90|0;5^Z)j< z>gRs5Z7%;L?TNqq>TYR}oE{XLy^M?m8%A(}|JqocXgBde0* zCCad-LYxw71S#vKg>(Xh^wgrUWc1y%-L;(g6GZgiko)#J{_kM+3HuIQzX6fc*;@fL+R%g!04VQ_=X53F7;XJMUO~)6KX2VB`Aro5zsep91P7uy1GH zW%X<@8^y-6aTl>VB(Qp>mubXa550UJ;9cHBAlrWk^85wnIrhmPjmq=QH)JJ2o`<8} zyfhRj`K7A@0{tdIpcj;6lR&>MAkS~UP@b<^b<^tgx8J*B{tfuuSvgEN>g_>lr@Tt0 zP0Gy;F)3~4KCfh;+g2TZreQ#k>%*ymwsR-;{{2^@a{VX#Gf3ha-tXr(@@pW4SMW=K zr*Z?(Rz~+ZNDjHW|AWqtBZrGL( zB1mB2wE0{JDx*!Ig4U}GNkNR8S_`u4Sda|52l}l5g~9v-ng~l@4;X1$>#?kjM=TeR zLxQxPfkD84x?L1`?jCgOA z>KF$A?MTc|sKK%VuJ-;8lKuUyZ3Bb63fdbB zfC@-3uLqJ0vJ+LrkKF*#hR_5g1bv`+R~H27C^yNZShvWkAW0NDtKAJynC1ZipMPLD z?T{r_S>TCc4nR~M#C;HeE&g19fa+0wQ%!Xsv z7oP)O=fLr!M~FzdqxZx2x4-kwJ8!?c^U&TS=NtDQukQe{yTjAgIp872mFzuxzCL^o z1{H)fld^s2Y-`70XIp3cF|w8Hsp)k0nNQc8J%9F0s}-_N3s`Bn32>3yxMWCl##b<{ z2s&<25#V$Rrf$CX-p!jg-~Yo0?%Q zS#4C53SEL%83Dag&4pmq$9Qgn^t$!d)hk!sylUmj^)OYu4TIa;!VX~yRrnobNfSWU zE0`-@1#ym)RkCv087D;PZrH8f#A7}Wu&#e$exZGG(>-giFGycJKT8YwslhX@TD9i3 z4Y#gdck6Ap-iqXxTS)g^vSdj2UA3fq{*r*|n;xNp@)enzYm`*UC59vr1Xph@1Tlf# zW^Jsi`TDEfyZ<3qR&%ra>QB}j zI(_ck=`&|Lz@mr9g={T`XD^J2jMxc%z_B; zAoEtQK?X9e=>q_fi4_$e0EUddD3vgBjZ$KgBXLHpq;{tPFGul%O?9=k4b9CB=NtQ) zny@+*kn<3R-P(HQR4r|F^%Qh{=3HZ2)A{=Pj;4l&`o6(-jGsm`a~SU(N*>}!QTsp+ z4s7KV5(}PCR9fP3V|0&Qdxb2Z@yRjD#ZjgT(I_83SEdFDF|^*q5vwvBu}G=rFnV!d z>EPjpa+`mHa^4b2lYOFc{s?LED@c>yiloUeFO(*3UO6O9&Nnr+_1c`yuf8I%u6>6O zpF^viKi~Y`yW2nBd;F`9KKf{X?MXsT-HFBgsnh40n!i3;r)}#ogIKPk+u~trxysx< zd%pbYI7CaY`OMdlCEwIEbPNvSr3&l#1GVQYyt(uE?k}M#lBTF|TLz$6`Y^aLC4gX_ z(ziy$Od+Jq^uodm#LWF9W$wD`&gEFN{|O8Bmmp;Rj^*%PVc&u4w=w2_4^#vb_DbVV zp1g1Kt;kwiwWw@nepceJ@Oc%FS{x8QGiJ>#1@P}h!e>bNE16EB2)WHw3VXi`%#GB? zfW@dqkLQ&a$f4B`Lu+q=oLjwW<$aJkZ$YjEU0!ttbtHu9x zwnW%7a2*9e86GLlC$S%6jxu{7!`^0o3-mu?zxxHlX&&0NX8u%>fXW>bP`Ccz?u~1P z1=Psmd`OwQZRIeXm*Ri1_a1<8T~*%rebcLEM!j2IvMkHCBsbYsbMKDrxWp+YjS#1h z5CRGL$UKc42rRJ6vVYjH3mbM>zK>-gv;>@x>bS-|F0w7l>b*-d8cqBE&U-VOCs{Re zmSvYG>)kgq^4#}sIrrRie&=@vy4=`H=*pFDO}%T-PIx?UGH*>?s68e$YMkw}F3H`Kgx5Ubc=&r8Fq*54?x6$FnEq#7m1 zhBzy>w>Q+>Xl}-)7z`oJEeO~Xch6m5Fc9ThXIFP;EjBaYjJ{akhdd{J9X*{jb@Ax=G24ak$+>9K1{r#cF_Ahr z>@F|_>YP5Wy|2H!4;W3}suZOg9|2Vg*nQ}lu?O=(V9D5Ovzhk`DGwlNw7{1?|S9XmSkE%(-COvpy~Y0h(>a|{L)De=@cT7 zP9YNMWPo(iKsrftAxQJ^B9TEYOoj-_KrYoZic5W!w{ojFyxRDpV6C!pPvBK4O!wOn zFd7F>mE2DKOX(9pr-i>(QeFbY_quSc@`zE4likzkT*V{rsl$hjvXy};Otvx&_w;jo zGq)P|^!!F)$Awo<&^>`~(n>oH+)I52)OagXRv?Rl1)8yy>rmphDDGTk_+_p;_RTu2*4+N7>m!Yc1DK_fvhH z7QW#9Ow>-gN$$rg_l41dAl%S`g}5PzT=9ms-7C2v+3EKL*??QQK+7)@@;TGu66>x$2xKX(q^yz}SJoIZ8@7!28` zKlyi3*T7CEj+g0?-J+bl?n{RD&`yDk3ye0Z5J|)Py)mG9}@d$n#J%71zT=o`+QU zr{NWb;RxGAJveH8Lox)Wz%LCj21RPZzNPqd+!G+W5|4<`kT6qhOhkB$K@(<1g50o3 z;Mjy?A{R!H=(U*GhcS^016E2|Ike|cr^7ec12Y??wk6hCD6h8L?cNYWgX^QX^2i>TPv`Ol_H-$WM|sxuaxaKgmp1>rda8GJ^&DwmDoTT*nuVSjYdnx@M-duz$M# zo7=a*|HV0i##`}ktAB_Lp2E@A+|XFp+1UcJ$vSW@!rc$+fp|>hLn@w%6KNtJk}BXt znqcw&6#Pq2?3XWJj`OnoIrFlX7A{%1G&3zLt6*VX?gFsx&!2~5A|F)oRGd%~`Jhw* zCsgVHat7eHpYrDtsJpwZueYtoF-X(^aNiFhvGl;F>!~UU94iVJEn8exx?*{0!Te=Q z%F2qC5v{CnOytcfo{BqbB5#%|;Le&zFDSpwt}bD}egqbc%Mz_X7t{&>ND_HBk4vGTtfI|p{ zAHrNuKR?9vKjQqu{~GUI@l^KCYyuCT35J4+U3{rW1IOXR@4xxZ?|%3C8^8JeAAkS) zAO86Mhwp#rKW5|y9A~Afn2CEZwK{NIyK?c;g&Q|2Kfe6&g(}LhdAW+bWpvEkhdBPK zQ!x|oVk+F1*e&4PP<65Ld|iD_b=|qs=g;4$zJBEzQUYBi$KK3cki}EkLW0tHTsLLN zWPZw2!5%5tBtJTK>iEYO&YZq*M@QvS45%9GzjFn%E0d=JbLNOTX6Yy+SneXYPaT)Td~x*9O(alMrD zr{ty_;ia6S#Gk;CX_}%ZGj-|GB}2Lffj@OVF!VmKJGdWkMwSJ7{fVE)#5aD!F@W7_N z6FA;_>(FoC_{A@N`KzD*=db_sm#_W$(4P+d$$xzMZrX|0n@{4sO$Dk#JgTo(UcFpf zTXp5ymCHyb2#iJz5E;U8n_avUEIl)G{-%<<80It}%{&9nUT~QC}sBHg_@BYTG)pO zOi#fT3S2$Gm}P39yB2gVPzG4#IPJ5am*qgtOU zVYS?o2#J*)h3ohr%4%W~;p$EjYgygJsnk1GPNiGhcnA*TgKRTg#bUi^P=pj)xpxE) zG1Xirw6jxaXS;H^=23q0(EY*QHKBJ6qc8?~iT+`gpTB^veaR{dBPaE%a5k^rZ4)Ah z+5Ny%b9&H+vsbKe=x_7w59loCe}i0U>%lyFUYpkYg8$tCqmHV79MsTr3Kz{_O`$!ZfR@o)GH=*v|h|OJ(?)KMBvv$15|FKX@Bj?6>>THa{ zq+*D9`FsP*UmS|h|-rK^`VOsF+(Dz#2$^;$=(7oPQt z0CA&MjOmf9S4%b3d+p3r>YdK&RYa>7>U}6s?=7oW8^0*q*nVs`)mEVzt#w`RMfg7&~!UT6fsKbMZDiCY-k|-ILV&k>*r0i-S?I2#$5+K1F zQ4&$$7f^yf#787!e-+5y$7 zMuA$Fp+Kz*{G*B1C8-WF7Wbt_@~pRTUjq9{+?OQ`40ZwX%Xf##FTD%!F_B*`K?(9p zwgV+`UuI%~3arWFJ@urcxshjY;&B3_`5v_OXYu+ldiWlc?L2!Ig`8)#D4aZQaSA;= zm0I7!7X?PMv{vd;)Jh+tRs{;wN+gOif7ZW_<`QC4^?rJznV3}1VR#BmszWrIMJCnL zxb!or=HX*vQf)*@OsaEG5|e6-e>DF^&!)eQu>a{J>^6+>(W{hn&pN5(1g**q2t!bp zabV&W8D)QnH+~F(4f0rGl>GpOnkJaQC|l!SrT%-=Dz))V`m7*Vy@`h)ZdGE*C1TYV zP!gAIDas+rwk>ekV*ST9OvObs}TobgeW|SX7?K&|< z*@+zE(2s&z*9c9d18Ud%_`+h+L>j36Q-Tt7nKY4pVd3}|KF-Ojc!}EuHDn=P%!L}_ z=3fdv|3rGwr(gRgZhc}a0u!H~Nth$%aqL0=jxUiJsrA&rgv;IGni;nNC1`zp^H74;m$U{25yc;5$vk!%2XBK$hFS;kMN})%QcG&} zw&68u{Rs-xN=6{mnt@{G&-%Y<2lr=t)<44@`Oh|nKiSNA5$nYhlJ(-N5--HFNh0IK zmn72q3la|r*VA9V#N$CE_|2OQUHu6B^m$lQQ)@?;6Va*l)i+u@3BO?DN5rOUR0*p+-kP7v|Ax)JT)>hNgwU>O3>XI-b;$9lnp)d-RVga{0R2MSzL zplzZ9oC8Xw%Eswb6^kfZBzQze$3%sPTTCXT5JQLwVl8505jvKho*W+=gI7o}Cd6Na z+7w8g?&H3p2GSEmCCqb>qU~&QMAo|bP@iv*B4U9H#Tf)rgZ6$KXO@>Q@%g}n0xHB1 zF(FxaLVQA8Y&_~o!I6=fl?5I{Lb1-Do0Sd@&6K1Roa5u;qHHRB9h%2op6DZXLJH*_ za(bEI7WObV6Sx_0A462T1If~R5Y$6OH#kyyZ5ioATuZ-l@<8E0tKmXCi#g!v1@w^= zuV=vF=m&(jmy(yZw4iqY*{ZFpth`bWz$B>in$tscoXZKu3y?SO#xjI1gO~xt5du4;5^i$2a3x1%wH7>!1eYQj1r$Kwy6wF-PUiW> zeBv>tgYtAyK_`$O3zy&r16{B9p8xN>K3f<*c$)8h!!)`C#V5`LT};5c+`7PcmqrUjK0|KN0MPK$|Q49CYg(riyo8~_&lgN z$s}{JV#Fb?PgzNf&5?ZH9Le|PVs7UqDcQpP!S7qRe>m5n#f)1ONRw%-2_ua~(#NRw_+HBZrolkVRUjO%A_>jkXu7M8A3AjCcvW|W8F4vgOQ@&w;>C-d9?U)WYJfd| z4^;23*uSuEBj>X^GIha%)JQd(#-D~5(TT#1Ur-tSq zdHPJ%g?HY4_k$CsPa})49prMIV7+wNSTyA{^g%4?%%LV-WMrh?6o$zV0p$c7;87MY zZvyuwWEYa;VmN^`ZqVP)Vd!Uzq+h}${St$I2}3`JN%}cV($AWC3qnHr`r2TPvT}vVs7R zrxP!2f;-FzfMxK5uvcLou8ph{Ps{OH`p ztJls!>xxs|sA=o759p0_Gd`8pU_?^J&aNBB-g;kYOOVIJM1~qPWyM9s#l_1o!9f4w zT3nEmk(pD-R`7A|+4FMK!t}j;cJN3k+zz{QXs|~emYkI{S7A#S%t(thcpa-(t=oLZ z&O01Ls@2(3x^#A8e99fr1moPRwrpG+Yiw)lcA$rm6w=`wXw$?Ml&xQn|BZO@<8S@) zXRrR-fBg2%!^h8`zkIXZ?(FHRKK0%Q$B`8%gkzzxW)P5j2RmDPd>pUim>U?zJ_uT$ zEdhBM`@q+Q(WX$zK_lqHf(C{uLkReGv4f0rv*znf9-xPmAtv<@_=4?DrqLO-7~Wo6 zg2!d=cX&7lvWSA^9Xx-u1Pt1dYZC-aZjhL916}<-8AyT6p;{No9HqvnLHbF#++|BJ zfMi=2784T{8bWC)&0%3CB&9S)C8flMqQBz+SgLPvV%q`wSbRAHla1P_H)%Y5{Q)VZ zM4u}qeXf-Bxe|R&J1nK7&y|us=h3efJh}&`MRfW;odnhzH(h1%;<#D>$(1LmW1*yu zg_t3WP{+cOpyXO4slyb4p-!@b4&vnq0Y9QSr1r+u%BxqgOeI>4Sb7I6MwO?#k$rTE z@sI`@{i?O=a4d;e@_K_jWXXzEI99N=yiKjpG$Jg->8wy;q|xzGe0zIW-w@llZTt2+ z?pPb!-`>u8WNWwX!?6|HRVxu(YRn)@a&re&Ab+9bCD2ZYD>zL=q$b5beOi>l;pp+2 z;#p`KFRNubt9l68KL?PHoLEP^>s)|5X^{3wf)BTlqh!0;U zLp}j4yE^b;RuIi39WTWb(D}lt4^LeHN%;pi8m?Zw);@IR=oMg}kHXT{!#KCHLL*=RTlxpFPDAO#OsOz5)kAA( zYU^=2J3C!AUWN(7hYi{X270QitLv(n9lTZGrgFG>1@e-+UFFEJu2fb)m5U&1QnUyM ziJ$~Os7v5guvdT`%lCCeaDPo9u;?uzE`JEh#QOU-Y2XWBt4`$&h(^54G%SkXJ(QWO>|PwNkbq2eZP1#n%x+_H6tTin9t2UV?I3gwJRhc;m!22TPI~mr5mh5m z$SVlzGZqS2$+(5ci{qCqN#i3GriOhUi9$xLW22C%*0`zEIu_FBRy6QP6!Lz;+z=Xg z6ppL48qh^fdnQmXtvvq~tcw%%eP=H)9fPXwSd zhgU0}2Wm5d53sy#^KA|=s&&-^VFp`0u#&hfVpLNSly{+AU{u3xP2N@kIW{i)9MDey zbwTIAo$M~deF-pUy086@320LBzT`*!lxm<)6DZYMI|XpFz&xj|h6~TiO{JYCXH)~3 z^fmweY+iu-5dh9~KidGpCazk64NvyYX#tf6NNL>#5nAf(#qP_`g*U4i9**E0kqrFA zh@L;2#hs0V*|7%cjZScn)fqU~A!Z{?s8w+1Jys?5W+}kF2W09PiONKX=5;vE^8(W652;SJ0 z{M5X$6MLiKjTL<1gaYvU!U+ffUpP{$3VB@xU-%ID!T|*keBl@tQ}%^VxOeyzFecN& zUHlajI75W%UnNM;#suIf`!nEb|J-v3!r=BJr~f*xZpXM9tzG?P;P2|8M9^wz7=`*1 zGJRtmJdDq=3~Eqd6_oC#$J00_9ZgsS|BAo+%fjFN6#@5&NBf@*J@i)uT*;>y!}Mp{ z5C0VbHx=xt)SoT&7m=-(;+WMXL4T3dpKX=tfV@3ePSIFaSt0ujU7w)qR>E(S)j5gY zLY&(0-dk$Nmah7f+OcIuimS8Amcqbs(8}EhJI~kXbu&fXS!GRdfuT?{EY4OSnGk#@ z)Oi4QoIU&HIO9LycvRw{`XZk1F+AS^$@4uL^iZ(^qcJ8u-PAMWK;{a2m)lWu>hy_Y z=Nge;65zNYAJ^Zuvh`a8LEk2F`*drW*lT!d6!SxALn^M8WwRh|FKr4iX zM#Ls0&Pt52gqlP2eO)aVbhFdq2&3g==g*xzd!tuNNv|y?CC7a8;%ap<1#NBZ-9v`h zSg=fHB!{OiEGj82Enb+No{<8ePmEFN8|Z42)dIX!%|)-+zJ2?;ya>1h6v#n_M3@mi z?)Se%O8TSCM*MXGj@YmecvLNber?@4SJwq5t}46SGN){-Ee4dF9amrf{`X&g`Q>l^ z!w>#=y|ulgt?BCF-~9VG%aCvmKbmj+^tW%GYa00NKb48Or*;4E+Iu&E)N8(k5JcZo zyuxdai_)Q15u^rO9q2AK@L{{{ZiTX34a#abQio*aDg{z+YLuL4!TMu%?f#_qeLhTyFQV1^EjL=4IQR_%AMaVtsrR^4%cQ{F0^1S8#avAs0OH z`jjPzvy4HTC<({_%5JSrfvgl~&YeZ`snj}KTurr*<*l?7S%!;OH}wq;boU@To@`br za5XVXr6DxTU@)803(K;Vzx>Z%|Nf2NTf#zt-mt};06g#bainp=@d45~oo_;KIGfJD z|2|?0Vq8w2Qi1mB>F9PM@e=ZWD;SdT_yBkd#YAfFXa{sjz{MhmOrMiic?SEsdytqT zMyXNBm7s68SVE8|91vXq5X_j1Ax2xM1E^ATgva9qpmuNwfGjx=q9hK8&_Vo9wcN{) z8a8U~lKBxH1#n;r8r%2-TPU&$;sBu65)m0{v|s`#d6gEhQxh}tAui8A_ka@V-v+Br zR03Fu+&nUXsW3_WR{m}1*KLx1-6rYRZRpo+=vVkxSRev;o1|Ye&MT3A+j$f7=$gzB zYR0oE2K#{i0|KR|6M2v>oP6)ln=s5-Q#+bkd;1boveLrhel#+vn5nbK~=hpWAwU;O5DW5>lCO|8xKT^xXlTJ2kJA?w`9>o*$uIgQ$u z(eE1SzVy!Ft9?FqYkTh?9-*tQzUufp@0`3|*9rDLdsk!i4fYP6SH@{9mgvOv)X?PQ z#AuV&JqR2wLrz|ZZ*7R)5SfylZOZ^t#h_R2Lq1*?a=i6II(mIbnyXR)mC{cO%8=9E zk44Lx>Xie*r1JH&bhotk0hVkIp|t~~S&$I`xpA(p`WjmXVN%qZFfDWWG$&?g|d$LB_)4l<{&v8u|J5f8aF zD=sTW=1`cBff}nue4@z|myr=49)k87!NU18qlP){4sZXZ<2AK4O19MUrNH(jsvkGO>xamkX^HfDd2acEYOie)7!+3fwn5f{HdXieby`^$A+U=dq@ zf$F#0%T+FW4;w#vkJ&gLVs%wNVKUjM?{Aj zc(oxSIyzj#3~CiVC$yOgyglJrS>aaX@y-f2hHEtp5|<#|GR+{fcRTur+)jrg1X zZl*Bk@s&U!62K5pHQ;!>ZZGu-Q|KKsmDcTW6CR%#4GjH`DgaJGH3k89O$#z4Hb6nh z@hc#o0i9QK1S-csR{M}&3wUs^TuhKH6Fn0%Ll!pj6%+=A6HtT{8-$YpD)joV1W7ML z|4213skS$n21e+hb`eIEA4ha6*mhL_mI>Oc0-O&I5Tz$I@q63+%m2T({gFfD(G4=Fx z4RDZDW^T1}75Y!V=cXmV1ckjR?j^zw3@%wUQP(;GvKI=zXbr6M{ZL8lCXtPMeG zRQw%|0ImzLG$1nMKNyW18sH8Vg2OTzu;6C_{L7M089{d~}4xEOae;7icv4 z2Dy@RdU=D_-h*6{1AQRc?su3&baF2xzC?Oz8VhbNJWTj+z_y7c{x_lJ0oXSI0YXyG z2bl1XSD{sh^+Jo#A#%a%5JCj-70eSBD&oTNhg7kEti-4S@ZLZGR$Ndt0mqOZmLWO? zE3O7L;L_vcaLZIH60iywHYLgmz3{^4LAoWm%nU6LU(W!UqW=Q0tuTfP(5nTKULAo> z#i~+(RVBY9*sBGSRfX#rEZ4gGyPMIcEnSXsm7|LSG+J!YX0w{Z2i@I6oZ8&e1I#Zv z5|W3y5srS`sQ8R@&n9U3rl=?qXamjSpFog}b6<5&s!* z7;kwf`oN1-z~dc)+BxKf`Y*5GBcT}5>WN4ShLzpt#!X-a05(Ys>>xBD07>*N65Tw+YtuQ3l?wd52nPKk^(p-o$>!o#m!2WiK_<79Ok0jGa%qm#5VU5BV5fc}m zUQkq2v>=iB3P}^>QwfT_d|BaAux~F}kRBIJwML}p&RM#8-@e`KQG7K*XxN@z zcT)E69qX6Q&5pwwnOd}E!#$t>@>58#e$VQ>coom(=9aK;+6+HDbiEzorvK)QM&8HI2|o||zN|QQ{Db$g#krpc zYN9+8Iyv?p;P*us4Jk{c5b9)%at|V$!!g8j?d=uG`Kh6L5^_;76TL*YF_8@k{Yd2s?9oH29T~T zCvTQc2B@oCmyny6laYcWF*Y_X!l+UjL&9SdlaiBX&6<@l7qTsarSP^01QOvUX{ z*u5-Woe-a#f=E)jWjXW+u3RTqV*1b>IkYT_N-(ae_1k) ze}HlP494*@l5zaBWE>ZULe)vQ(V^A5p}@+fGpa**UI&qI?F@!BQq#ON#UWmppcruZ zun9=W#iYrd&VWxujT(cx7+V`5zv?tbf8pj-eRy0}cFv|pUVQPz&rN48Y(}ldaKkn>ke=ky>l@0%_pZTmQ!@Vhxm7227LvJdd@)VjE5u#IZ zCX+TY4oBEDCR7ACw}`IvKarZWwxPLD^Xz=AKNWuMlZyaRLc4#}LnOEM?7V@__z zoV-IaC$~%Hq;=NNxQzpe5EsOudsA zYg&f16q>+VE*-mEeGSI8E46J6?cKdY#EZn_?b^0&+uDVh5eCRMUM>#} z-DBeuqSI2sAnXkB*~Rxhao|2?$;@9=uxcOHg?sOL=qshjv;0S;(eTKF>?z(#gw{JZ z7Z(&{A^5i7j{UnI{z?gZ$^7CMzxc(^ZYfDIX<)A6l(dlit<9R@yZO$mul(poKl;~S z{N_&|H}&>=UG10t^vj>T@{j-ckN@`mnVyU-J_gFp@8Vv`YG`*N%mIoGtX`1rDh5%E zy^BYu(<*tnvYirwW^fH&6FohW_QGVLk3|Gxk5`Mx7>&mM@%guY`3IH8s3U}1B8D`U zW`!6XiYzZK2do}~3gqtSLWXs@HauK|=8T#}QGsD*V~Cb>4-O2unNn{-ERor)bUW)# zyiY0_Aq=AheFb|TAu<%oNMFC5B7B`gytdEoM2=i{Y%H*X8C+6kRw`O2GBiRDO%>x! zrZC3L!r~KabPv|O^&^E`qlIC^nn*h~Y+0do;=mo+2b@rclnBd`_4Om z-p8dQeXd+<)PHo%;cP`rQ8$}(+;c~d*+#57{1m5vF+WysiGYDPe-$jbtEM<33LpX` z3l2ZU>7l*1AU-{3>9Q5~JXgm4R`_{-8dK(8)GAqU`031_Qe@hGO7XS-_xqpz-5R9U z{^Ib@3)b|h&8!mN7g4`tQQ@aJ(H1JbL-rn@&xyb@y|>&)I3=N3NtY3Rit}?}#>TDrnTuEM%!s2{FgCT>nt{qB>jyu@sVnMq#6CG5 zCY_KG6ium;%&JjXaW2xronc(z5^gi&av$aHVeGq@!knEUm`snEKnQ*|eUMF_%Rs3mg3cz&noq?Pl`4J|wwp)M_7`J{Dz_`Vt0LE>Wq=m7Ib_CK4?4hO}2_QYTpEsm}XR09P(B*HN8BDHp7Bg;-~%|2b#OFK6IED<<&EvA5__ zJ0dhBcGq`9E>}vmmr);R~Oj7@40?{nto}a7(HFr6fqazr@FtkR&%y8X&&r zqHKXI3Dp0;MP{x+Kd+MPc-BaEJd2W4Yz=g?H4@!y#r~itFTSJ4#lWS};lqwyfl%6k zb|V-Xm>oGQTibcAw#Jr(L_w;iCb;){T*O15=ejx?8&_$Td1) z7mLlm4k{wA<75QC&?*(i5L*(g$vpxBWe8k8unG?XCP4lO<{ld8aq4t#8^8}*K2E8J z=avY=V6S#5z*r#ei~$`1V^b2Wu>cQ&>qMbcqb<}*wbm3uSP3wz$Q5|U78Z&Jz>n}8 zXg0ykWQ1=A!OGaE4MjWx8EGh}^vFAu?uqs^&t;?n0O+%V6 zow}pF*CPXCPFMG!jhAcWURikv*gu-D-Kf2G?ONs4>vg>q)+iUX9<1j+jm+(W*~Ek9 zcgW;!{1*-exN^7xjM2bdVG!%IdigYV^N6a6jXKugH$)LII`|cqMJ*f?&Q1So)M4{sM$48Vm%{(QU*11`pA~^7|yl zelL*(?@IdRHO$ptp_|g{AHIM1@Zk?(PCRnNGvw%Ly8IE+kRExvV~8cOUZ!lg+(5sq*rG>k zs#K=9%-p$!%a`P)rzYst3`}k2^n%41rrf0~H*Maq3h1jPbK=5d({h$(hc8}KP*AXF z@zQ0>mMtxa&Ijr*zhDu7O^cS28F&fIBr8@dgA&6Rt4uKonR)s1GLqsz%7=Y@Y|QRE zckbM|eanV*>(?ulYP}^oIU{?);-yQME-wb{QC8OMIk~Xw=FXX&HE-Vh@Vtfi#)Wy5 zD|-I$wJjOAjZl!Vq%7WW=gvo;_{^q~RfX{px{$D_%r$rKUq5HpBQVo^oqdB<{(ZrQSB=bpRozyJQb@7TO{?b^+E+zBS1JNMrWi{{@4ox) z`$vxf0Ceo=5i@%D$UE=8_uhN&zVr55Z@u+4ylzkOd^mx*+?~x>UI2|zz;qK5qTKX&IN$>ZySe~G(U72p#|xg?F)u5MZ?^OiDyX}q`r^5_PS$obTxtN# zmbc@2Q%7fO7XYGgEdw;-^$ztmRo8=W(cXkip716UcNKiT(L~GR7zF&xB8`ye;NKb;aJv=S@+i3`1dE?iV+xC~sJ(y#;ZUo=w5P$ufzW~6 z9{aMQ*c75yVhIC0CKLu6m|kTXlU^ShY6KcZ84~UR@TPx=jI6+8g@hSAUR`u#ILyCT z60ug|BzX}Ng>^D2CI(KG7?y@1t>Qd@P8uU)q9c_m1=*(o@FUwT{NG?t1oNE6U@~Zo zA!Lq*A6}Es`6n&16^J2 zkm!V2$tsPC!%f2vZ;O(HY7JllnOv)x8UX)183lfQ0eCXd_{m(;(zVofGedC{h_tWox|NB3; zPbLO0T&-zr1!h4Mg|kT(w%g$fu(#KNgs{$~q%q^_t*@`|z21lhZoGa06Xya^VHp)F znd|1&Gshtk;odASo3T+XMlY) zI}7k9-l)`t7`5^9miS$$)0ep^DXHm%AtWBt*|W35bLIi$JufF4Z)Fc(+w>1@S+T4z z@3AL8xBuRUS23RbK=|Q5u`J%YarNre8@KM*yLa!7b*lh^ShY?Nmb-Us-n@Co?tP#6 z%xCtohw*@Fz1kfzd(95NxAv3E=FH5wd5f_&EzX;pxnxPv%5_)_)~zhU$`!n}g@64U z-}{&U`?H_^`;Y(On?QHJ{PK6EFRZI>0Je1liL|d?yWJ-mDh%sJ89JC5jHKAz}i;o(4OVcJ_Pv>uLqZ7XhPCerHkCZmrq9X+kn zl;^WaphNuw_Sprv4iFNA=^*I<_>n*=hY#Qdb7AL>0jXhqUaiFdt%BUigh z;^3|>++|l+C%mI$U)zcY)KM|v5n-VbVaopYwzjs`X$pNkNqr)cq$k3Viov(Y`C3nZ zfIPr|n&z4?n-+!U7Bojob8{26oULt;m2Iu9v>BDYk4y%<5uTksxLygb?*+&0*lWb{ z@zw|iSU9mfw|8`QgX0c0QiUx*j!UjZt$HF~1o7mI_6>~Ayw%;vLBG$+BJ+ITeK<2K z_Xj9DPxA-4>@3RRR-K14c!45WzTbK^(H>5$aUx%7CGFSZ>9heSQmb$oL#H%4mGS<4 z9MvMV%Skb&0lVjT`3cM6%LmMKHlfL^vIZDF4_dhsc&ttIdJ*iNVrIgQLOe0Okpugj zusn&QR~OIihrMD0Y`s=AC=tdyNj1o7@uUa2s5IIs$;*&nb@EzO z=*3C$=W=u36l%>9YJFI!wH!i_YJ82%%v?hs)p+jolxiGn+>G{_X&X7@Q|!#*?#0vI zSHiwa&)Mi7IIUS+JDx8OT!vg|J{LEIr<_WiF}373b6B`XV9(iC!hS||c8k5rUCrY< z7#C4U$^XJ~hM)6Y>^gtBUyiW^13r#Qi4JuXv*QSKsN?&C)_{{z9jZvOr5y8ef?X%= zK8q$(xkm0h)#3e(%Fy2W=7Ebx8~ZMNSZQ50i5@j__i5^?>7pH|zvP!L5q9ol-nryW zZ1e+%9MK2#qn?^xCE2*n&Yq26u=I?0e$fy@QYNJ>|(*|1^58tL_vcA>@N?Lu>M=I1ZQ_Iz>v{G8+i$-cxQ?e6e>{X>lS6;}!|SiV{s-x`AYg9)_EfTI{X{!e zsbb?wlV~|0Xhjg66Kg71geBLX%C1$im#ru*5yAX{5f5Xgcm&Gf4+0k|7~Z76vSQPy zEwFzFJnjZqi%l#2>Wm=w$1h7OzGbH?Zgj`p=XQ3sHrwsJ-GP#^PqL?tiULL|Dk?G} zA|f&>P4dD*nHUhN19jIdy&ivmTRg7r0=*TAEA&~w=qdh?Vq<{90?GS`_cg;G_;JCWiu9BdnZkI^vO&g_>ju7<|9+Qae5qszFe*zh(;JWJ^Foh;Dg(;LB>9z1^b0Ym}wdV*9r8Z`esc{&CTi?01w`f zUQc7QTs))AGB(i&c=Ye6XTEb@NIPe##Z!7M#Q7mw3aiY3^m-b*=;9geqOlRx4DUo| zzNKDBTWYdul3f$R)h@lZ!|F?hP#6wi1`S@{mJRj-ovN*^qf@XNbau2+{epcNcQD@j zGv914q|J5>EIrlLHMI!wt(9K4U^Cp*)Iz4pR_XQBH{RnfUU;OgP8di!yE@vMX;)8s zeC)qRy{{Sm;FImbNAIS@UARHmg(r-;3s23X4P16UHze*D|NHF0)si(?$^!4-gB!&? zxJlfDe=P3Stg>j@gIi^3K!l(u9Om{Q-rw=CoPqtfMpC10|1e$vOCmyGW&NxZ8{WoQ z+%g~>H*$Nh`9vUliI=!}tg=qp4l`u02X!=kayPbxp!gIqF%#517LHVsbJ1USA7$+1 zh89rW=?_rdfP$O{voPnZCtJ$4yU4<_1JE7366(AYb#4!8JwSg4Bc0b`=f4kH4|2{k z25Jk2W1mFpiHi+r1Hz&&s072FPmt5|kubr*1bXb`$)iUvG&pO!&b%jsPEl)(ftkLc zzPX{H z|3o;Y0?s(kxTaPcpKXQ~jw22_H#G4Gvqld$A_7YVUz5=Y2nhmG$<+jSoYh1-q#+m) zVM^o(uE9qMnZsZLR>Ly|1_IzS;BM1s_4sPN3EzYp4hthBN~jsRM(B%-A$S#n zP8)He8Hvj_x@0!t{5tQq{e2#@LK>xKlgx?(m=zSI_XSBk(m088^t_rlNDRWCe^c{<`P8Q!v`r3#y86*Vr#rg%^}a^9u1H8nQg zsBf$~efspp(^ZWPH*0QGH}t`G13sPBwzlTR#?vwoB9tQ}f?PG_1S+a9tcTvbX03Qe z8~Yp`jSaAW^=AykG%cv2NxSUnp-=aG6mc~l$;OU*I3_B54TW#LnA<8jYxTK zrSMXvyj%|_x*KFUD#3N4M2;B5N0&#v_udC^^`oB;e*kZP@EW;t)LI3fk7#b@uG(QzuWHIC1jS>9c3focf5!WKMi^>Wr-%yTd?@@c8I}5^@b9Ee04KFvS%z zsn`L*3xTQ-r=?Z`L2U)Z3UN&bfifUTK~4u^g*X^>0^fWJfzzi@kM!CoU|9~M`B5UK?%eWnkDG=U_z%(n?*(x!Gv&==jlU$sa(_*!i37q_6uC=4< zRV9s#*%(zXzAK!y2#A$0yoArzCx(s&()%YDAh?c3B&%NCNUW& z2el>;@tC|aZuS9g1KG%A?7RiBg~_ZDhI)NT1I9Eq!tf#lpar0(dFW1|4 zv=Qj|@j7WpZZL z=b!xiQ%^nh z1$v!E7s9ZJ>{z#=q%d!FSz&H^a=4~^wk16`yjYtH(yS^Qu!P1B`2c{z@)$cGlE%;5G&a2t;P?xpDO>eDcWu z+u6|puXmdT^MLeLXxwTw5S&J6bD%(|FsY3uK}*$Y^kyC4UA!LHE-+-@bh)(0)e0M+|O^xOE4NStN@<|g&4q4nurApR;&Py zam9+|G?a^rp#c>a7s35f1d(gwdE|H{?gz9yS_+}P;N~O74D2O1@Q@L}R1<>RRhCD} z)ghq<3`4jtT;=|cd&>HY17@?#En6tC* z11j->2X^n;wRay}k?)$2Mh*-sjH5qOAcZZjRO30cit-SIJBI>Xt~N$Q0ktg~*$?8X z^jk>KVT`e{iYdE40h4g0#@9bM|?Wj?UZD z6Tb0*HOAf($3FPr@Oy9l_=69t2l`v>@k{bY$sc@qvANx37BO^QFwn_}nMP62bd-!DqQ^{{g7<2Nuu8 z^UYmc3Sxm$L{w$>_Ieb0%9E?`^n#BC04I+J3@SQE;D?_5>X+|-X#d^211dc*nA-GM zkX21b7OyOm%HrUB!ss7;jCg0n6k9u5E_1K^?H1yYDF+L!Cw2rYfrLCy}(Iu_5_04s4tu>ck|G)1AOk-?cEEZj!Wzw@dCTVz4PX0&R)Fv?j5@@T<_g~ z7m53A`}Smtgl{;bgrvc!-KJM)!MZfmCzi3EnI^*#%%1WAPOPv zU{Vkb3-k`<&vnaGp0;|j6$f@cDoz`2j0n?}&%RZ_W6ft+4X}!0xr2Ns{s(|#Wwyk} z9)IGACmw(7(MKM6(EgfkmRPkY^ z$VlW*1}fTQ8nzl{-eNU$cvVIfVpHTuqb-vU+Yoc+jFvs9lZKv9JJvP2D;;r^ZS$IZxESOS_me>OaHV#`JVRvK) z{I76ros~#8<+n8k^w$wK$An><q^dA~dssbOzu#J1c`sn#7Ju=1d|yj?D_%F(K~2 zJA)`Qhz%8V53L%uOr2g&hD@x^qn=yrS-KA)PcGdH?t{+O^bzJxSUWADn1cq332C|Y zFnK~4!Pse**g4~1=N$4-h!z5-oG^02+8H>*Qa~008130lB=hpul6hHspDkB*r*|0rwVSzACB(pMb8)KEjyVU}-P8XAu zM8rH{kufnK2XqCDnoII$7ec)%oShy+Ce28dCoQ_5nDv|EW?N^eOtzX;tDFlz4Gx$<7H z9^JQc`D`+2rs`ZdUteYRmO!W6h~29ZiNfX}CQWC-3yV%ZXoeitpq)Ww zYld1hZ0p=Z+Z+Y>;Y3S-_-L*Gs z;BdHnkazh3iR1diz2w=JtZbx!U;{8bkMm~(BsCB^J-;14`0CUHJ4{vs_$0YSBOR_ zM<^e7vW16}fx}zmKC3XR&{CjS#5aj&zg(HFXY*F?qUhOF3!csPjbw1W)w8);^lX;0 ze`c=-7+of+c{+a0r3<)~0Q5dUHIMXb&bteYHKpu(@N06S6fJ=i{k%kqeorDr_d<$( z9#ZtP5-IxmpcI{zc&m0Z?6)E5Nv_S8F+Jx#I7hz> zj*C$QrKBJ_1h*3soq|Zrl+q#LnCh0P9A>vnXj&5 zFSG9pKQGI^`pm<-(e&SAud-jTH`s^5&l|XYRd{#I_iYLB)C7LrMJm4hOKaS)=2G9# zP^6~_4fl+h{+oSz1$41%U2YAu%3Tl5vFn&MYh zl9K{8iSr#Y2~r7)((qYsoi##9fjX~6J^&mt8H@w)mc}NHR89~pkDsvc;LqsCA`v&{ zV~y5G5blV;M*u4kL=+ADWqiC;9f=mz5iqo42P8fFWyT9hjD1I97y6aNF7$sei(bYo z`liG#R34l~EGttojY!@Fbr9TpKnoG(Q^xqd&@h<6Q|7_?2A}9e{!jzyAKn{hZ_qE} zizo4krX;}eosfb+`RZ|w;T4wZvnUPQ}!BrTljem*RKfgj`_YV zd$zEQPU2YgPt>fj-K*WeFtxYCiVQnQJAhKn&0{!OL#0kuzpHg_4h`*qmO+=nW2_NB z$LAo&tluds^~qLVxpJ+l>S|@>^&2;?T)uqu`t^5-@m~(b!taJH4|rii--8bp4p_;V ziT>AOTEoZozX~ugoZ#ne0#Hmifbgh>xkWg-5al+RFE;hmsnf^_BK)4Zd>P8x72y}b zr@?C*^m=LrQgg(^-zX3>w~97C3lUYgWxoSA;J;OfLJcMpHFiY?1L6vGR+zIrULI*B zAWUFS5L~w9p{LKCyKwHT^enEa21o;=WKA_n)>O)FZGbc|N!Co1kKI;= z<>hYnIyf$cJrm_jH%R1^K_aI@=+2lDp9gIjW{I4#%3TDTqMNeH6NX^7#ceD@vhnnE z*gJ(=vdX^01HpA3uha^B(%^(4&B{65xW026Y*AKj$Ym3rv5b9}?OUOZC_l7rc*1XaBO4_WrxLIjA zIdikp(z50*TsSK>A|iHHa%N`oumL9i7X78NvI=wR=j z?v{hhK)5~OHfiA%Z&hrxpjjsV7By)7vi0{pcHg7-@7#I+qou5ZRYWdJPF}WZ>(*7H ztTeN4)q`F=eD2)gSI?cRZB;5;YXikZ2Ak9rxJ z5vY|hKx5IcQ^ATM{z{c01{pr$pq>iUM&*bavqmdJAqKO>s5c=aizRe~31<}03?`f* zj}IFZ@mH!ILF+6Isy%+7SzHXX&X~9)_+65c62Z@zn3RTC^fbYbtJ3%r91MfeLUfa( z(U#q~QP(73ahvLHAmIT}FK%F8`Z}7MJ9_)El=k;_G>?l|8`Vr`rHPtpv~r~cb%jC( z1}Ftgwc}WP2-$`W9JX%5O*O*kBS?wwL9+fyBELS8$gl4}O8gK~;w_2%`kq97&7UU` z6QlJkcrC|}7rEo>Tbd+Khs@G(BWj+(Jrx{Uc!r@b(rm9{^gC<=npFP+6Ekp+oC0c( zLPr(_rH)*>MmN0Oy$-im5s&mW(+94_4C`eOBNW`&(O6Se2@%roEY~ zZ8B{wGae%}J~OYlxHxacLa2=kSFD47V_gWAw|;p@REjwzC2HFExB0{Pw^v_%?GR+k zxx(}HnTysB%}H?Lp4fuNF`H9+72epg>t2jJbfie5C#vWCF#^whnm z2!xJAM8(4$8Xr%L;<52b(9x3w4=89{u!+$1^+kO$Ox~2F*tod81@p(%56A0fK6h*_ z5#A+m_6&gx#_bU|!|;j0C^wF-7%i1+Cjj(2^^tfMwI9NSNn_}z#aIfGLpxw|B|&D^ zb9hNCsrR7-w_!I5P#Y3`E0_%j`5;T`OzI@49_oA$1u?V!8l|MpALAwJbfZ9>y^=bm zY?jk{PL9YdM>4b4;`QI-K|h1CMyQ5?L$d*|4)g3|6vC=8QR@a63e=KSLmC~yK%sdU zUnF5>Md*OQ%<3ajRB&gmL;>o|ohZPZxg3R1>x`H)>+rCrK}C6hcxb=FgSqk|d!8@h z5^(9Qrf2s4Cq53tLtj9t#8X>PcH^;!_^C68Y9&uCv12msFdqBg@r5aP?t7{F*NK#t zOC;vd9|*Lx598AZ@$_Fr`Ai}1^4qxBg9dnH8ud#fL`Kx#0g~7=_`+f^w)&Y%LE6eK zq{r`P;BEE3k56+z9J&JKE)a))9_3uL8eUJ{>yzOuk3k2pll-ZD8i%^C`d|}uJ=kzD8|2B;28LGE6ptbZMAL7ciCwjvEvVk`u0MI+?*r!dw=L>{1i1?nGn)dsUU#ScoE z%?SoCFq=P)va3R%HBZJRXw6elj44Y;*Eu>n`Up({b@tg(eQJD6T;BhPlDNF1Q4*JT z-)+%Ipb-fg$w)4BXe0qHbwMM6MkHt?PzVK$1PalxMlvJmOZMZF*Fexh1dfr;&7bx zpN!~mM2R>UlYoOs*ogSQQr`;*CdMZYVRhb27?>W02w`Agy8Rk9EW9d-g;yo9@J$-6>|1 zV_$u8thZ%feUgpv84WkXsOFLQj4H2Qy?pVacs_UjJmPM}^Dt;8I&a>*xu9IX7QHIX*E_Jc~#Z@oc%(XY|Ln-g^73H*Y9shE5kbt963L;INDh)$;5vn5 z3C`kA%6ag0NT{Dl>Ul>ZEdoBMf0NWB^+Dy#k%)`YKB!yeM)vsrr?dqYIpKYXhjKE^ zk6F`vwV8ZQfpT)(4~PNUf!a@qLnLG78Nea8}EG~bWl39Xk?9ieT&o)<&fOE=vE|=lyxEAXpGOv z`TyB_5BRvwDt-9gJH3ylsP|%3%aSFz%9dPWJ9eBn#fcLFI0-4FkOHJQO*11Uu&@jJ z?ZWTBAxlYMSqKm|KnkR|_qbOT%j#V-8fkj_o^!9Hxwd3GK)(Ne|L@y7o;$DajBa_$ zdCz;!bDoo-*JsR~yQsK$(YkdtbLP|_ipC_uAq$)fz#*%qT}}Y>{S)&;=BIeS%6<9q zXX*iedFG+nj}jP|Zg&=^(iNq}6`V@$@o`WJ3VVTy;fjO|$zn&6xO{b|(iQLM%1))$ zmX-?_FA94BJtXX}>{JpvlEmd}V~9FCXzT3i?8IACCRS&_hyf|adq5Na&$R$W^Nt)j zdgN2u@Okv;v7^8i;n1<8$BrEb*#kEIGk)B073a~FD(_0pBf()L#!w32fh#$W4jnlH zDvDz#Po6$`LR_9iAIc&5uB0=OSFzWfcC|@ir9q=>)FJ9g<((soYgbz zNQ^ZytRjK3Ty{!Wk059N-m6XY6ZP*!SF@v?3YodW0##Ng5dQ=zT zX&SgpTnzLJzsKe9(M!ul{_C6s_H{rGVYnBpA(%(RttP&zGJ7VYhsf4Mr^AJk;aY2A z)rC}tnX8b#uK@>t&-?&u!3OR)xxrYS71v~k72vgQnDwf1(JVO|Zn zJu?&CzHAEJ{sU{EHozJW!;7vRn4fjs(JcV!m>==4?=W`hvk%TZ$Ughv|94>T zwgof5T@nNlM`Ogbt3ZM`v^BEx0B_4#cv@czA7M4SZk|VJcv6uFB^4=ocw#fc0!^|F zQK}%s)2WH?NxWg$&Zdty^`-~WWs zEJoVDB^u4wLfV(l6^-W0wQoXeP7P>baLXFXuB?A6&Dmz9J2|f+FPRHS6QqHztD){q z(P;azW9=y^!J(m`u)nqrUNQ$QJ*T8%;lhO#nW<>q)XaPYo#a=}1)OGX<-+CC<;xdd zS?`Wx@7J%t_0BKffB*eozVp`g)z!;ZT@Sj3>sKuUwO_n^ZR~wf1{ReWMO7?6TD(CT&C!uVf zICToD=&=(guBbWxO}P8BCr_L>aT3vtEiLCxpFl+6iPMy6@Jv6jUtQh(0|5CATuV*P zYi@37y8x~GLR(8S>Bq-m7=VJz>&leF@C3@A5AGgZ{KJnA847&tEQd?BcBw8sqh}D;8O}Etp3wu%s7ljjz-#@%S~B zk`LdfHHTU?X{;r(f!>%6w6Wv+kA2Xf>}fgu>7Ms~{mF60tW`$AT^vEEkI9q_Z8s$W zo@|?5rZZVH^73JJ&Q3PzWQ~m3qKhI=Xb6lP8JUHZm6gTmOd5Wuv}Wd4EMAI*adly4 zqN-6DW)S^{ysYC53SThBF(4;Els__>NL6ZGgF+<-o48gBiXhMd*mblJV`W6mDwhGM zV$&0Oodj$L5wI(O`J{2yzvXAcdr>c2MOKA-MeC5Sp^mou zD0@88L{Mpv?bEN$L9JBIEo7v2M&~HUvXIF6U@HI%B@)~PfR`a_rs0j zobX5GMsE-)%}ow9Vsnt?8kGSC-gF6A8KByyX(LXY91woBfA|6v$Ro$kNpXISqarIS z$&AQgYBGa7;PZHVV*|&2_q*TiZoA;~U1&b^@y8#Zb9qDZM7KX^&}A`tn_8=)Jl3#= zgWfG&%G`JZqJc{_-cG2b2o*^1c7OWz+i(BoosZBkjMgDt<>8Yxue4Eb~^q335240Ci=WA`i0-+ zMEmshkB36zexy(s8XO%O@x=nY?VV$8<{VhLeclLlpm59~2}MFNyWAf_a40ejEDTs$jO-NEIt$GVOI>OG4@{m$xNy)A`Cm@byO4-l+G6oKZhGACc7$t^%kVGYPxQnewqHa!unRMj?h|5y-=W-(R~4cpTrN;Vn@1U!ri z96a<4QC6WOz84J#sx(}I@AEI9&%Yq*^Dl_{{0r#wFQCuAAnNlki28i(yP#hl8*{l_ z@4xr%yYIcX|L}nwpZxxV_ukumrlWs&Z0Co6`RJpMb{xCtLTHe0Y!_v8K6vuP;Ugz@ zANZ8nYgC@#} zv)L$j)Xqoc@%cIzEL^ytrYbW(H#4(*L3L4jib)oUcG&zxFi^e$)!D@tRBo$8j{eSCf4JckQfXWl#>!P62CX9h)j%t zE4z1Sc(}92QM+O4xi@0fed7%v5MQz4x=lAMtEec+Fej{Aw-FApb&D$t(Ff+ufBaF{ z!|uKFmQ~>BtOdmpt{q_`Ar|X+>yf+P<`~HcYpWRTW|gL zt^cI$x9@$j>j>(xjd>H-hGB{c`vZ{>@_vFPh2KVe#QVlc!(neA92f)btl#GkBbYFR zPok0IH%FQ(g#S>zLn0HEJ>^yAz>N8h#;a-g*I8QLP3q4$)MF)D3VC2;#3fhGPQ!fQsP^!qhTpBXj8Io zACfjBF|}F(IS`oeM!~aaO-(bxxCQf8esLu%AoFX=Xq%IhRgjK0)FFgpiChwmDH0Nm z5{V%Rq)7;3)9X2-oQy}I0E^IORtAn%3E~-Pvg2eLBeD5|6+^Fg)N*uLJPk&ttOJ)@VbY$8HPl-lUzM zc4f3Hp7fY-kOZ7a5{Pl&93%mEnXjD_NrFaf>;`BSKeSP?k*j3xp^~tMUy==_V{2UZ zxIv_Ql;g}dWXqWH`nc|K!`A88`9v$pbTZ>1n>Xnm=waBgrUdM8K>RO3I(P2gAOAR3 zSh(Zg{!LL)ao~+N5{f(a{Af?KQhwykBXVJHF;l!4e-`S!P*Z5H*MMYDgQ*pSX~v`^ ziH(z})n=JYsY}qSlz{+xErcoUnUq{UcsI8YvuWYNs=0ILRxPXrFJrAvWtXdTMqo0G zj=a*+ikjNht5?_7RFq1kT5~dJr<2WEP#ea}4n0p>gpLJHWUx?$!9hizP+X!h%tJQh z#UMHZ2F?R~GAU9LXRl=-O zgdVX()FZAJ^@us>5p&SjmTisqh-L8}G2QYa2d!2^{18NiMQ@Ed$v2QPNA3?Q`p#>J zPF&V=wuj#MTXdUgmLa~}U_{z`lgaOL`PFK)k2W(iVZarZdR;NODOD>M_DF34l~+JS z(K)92A(xn+lvKWEjY%d;pHo#e=el|GuDkh*U%dIg#O|=ds&JdKYF4eP$udoSGU&G) zR9EnPp-)3{hXR2HBTun4$z#oz6QG3Pkp$K&!En|9(G{nV=F4UiBcj^DSfJ5h;)O5K zrGk$OvKrS2nq+c%A*Ox$#h6Wa4Eh7{-h^}rhmRcDyJye-g9ios<-eN1w~2{ayoY;` zFm}|68?Vrcsc6MiwBik-RxFLTBHv=@q{61v5O?1cw}VEK=I@Va`_G$76h6&7Yd9+< z)~lj7lNUv2^8})#2(Svi4=dCVzUly}dDOum&K-GY&NN@>f|lELq4~_fz{r>v)!-c) zf$kSCQ??pBKHk{)I^cIGC+3)Q7Oq~na!Fa)l9hMgZ4Ly?>4k;qn-hP$2SHA_`>Pn@?fI&xQ29E8t&7Z_S~7~ zma{;?oj=>s`j!>}tdgm#PPQA#;|*76x2e&$QPghN7=0$JYv?h=?$d;rI!PTHFr*fy z8Un76GURGbkjZ+_p6$)fX5DU9*fS|IkiiEq&tdY`1b8t5ZA>nYX_a=lQfq=NH92fK zDuWgCxYeLy1_#FjG0c@n@s0M4m#H;{`a^A^KC$Qj&q)&DV9Q&)cI{%bL}IS4Ub(ou zd@)+}u0(SQ4b2jBw?~<*^mNk)K0nt1%H;X^tR#Gj^?(=D$YbMPADqfQ=r^G5#rhTM zjw26j?$$&&XA_b5T`mXrEwm2s;G!a+v7-!PTe)NQ0sHCU!$*%FKd^uQA%Go^9XomY z^nc7YV5i6HGEuwVd=05PCqBdfwNe*IwuD4)zn9*)akRyyQdeRc?(QCrM!Q>EyS-jP z`1Y9&pKR|tf3kDH6LAg*dxpthUJbRXdigrg2Ctiwj=`Qjr*ir7<&}4B0@Q5NT@O6< z)Kd@enn&I*e(}yn`{2LW_t87QIC=8okOy__8M+8!>3G@EfK?*YUZ|IxO$KEaT55s} zb1Z1>Mf(OBPdLchloE6{UKl5cIl_eU>;f44>9xzq6IWe>9=2-L>ebs!Ay6lV!h#qU z_RMFygdk~a8O)dUaSf_gv`VXmq^*Udt*(#Hm$mVhW7tr{kqC~G(Sev$j+|3%ZEZt- ziCz!B(|{uxeT<9vAXi+Ya;XliB-*GKSgfHj8*~c?mjHU@M2S)*S4*M4DzJQ1Lq+0Z z;1R&UOePWwsOUzm1l5JvQA$f#sZPZ;afw!q!wQ{RDM1OO5Ct#pm{_6?6aj7V%NVM1Ux2}%@X z-(YPFYnKIm!Kh5-;AC1_NzRaD0o$BfEt7;nYb=vFjL54MVUYDhC65H6m|o!v ziP=GXD`$f~2T2Zxff9YOq(l)Z1II>fm?dx=PZ*0e!nq%lNE#IplGj-9G~v@>z?9B% zNEk#pfnaQ5vB<}K#yXI97pr~zkdxSO7%CWy6eOrwq{oX*>h_oG-JGaxr}S=4)V7?c zZAsUTZ$e*5gmh07jq*g%C?}>WHTp`jNV=!RXJsj9HNokE>}@2_5o5)5oH`|wkM^GH z9mP>R2<}{F<5VV-EGE$y6K7jH;>%mY5fz3A3LWwWgV8)oNpHw`LQS>}U(ep@gV)EP=MbBf6 zKM&4{^_I(Lm-}1;peGw}*p%MUe$cV@k9r&Nw6u^mFxE^-0Bo>mF(^6`1(T56z-f{- zr~w;*M>blkqNziS&nc0I{iq+*15Ry|AnTMLOM(zR=Cp(@65VT&=w3~@R}=1auIOH? z{V^kcfH9t-33 zNUfz3T3tEW>R0Fhc2QqI?F$O1L_z(bFnR6*1@#GfD;3l)=%t{(F|TNGeS;kRgTWj1 z4s?zr#(2CA{Eqqw-l$0*v{6^Tg6}WrGg^(%XV3!Fb5zuGyx!5Fp;3*{f5g4$v!Lq4 zQ93j8aC-SXoU$wy{76X~*ws+{ASI{raE|biIx7j!7ol$+#`O8_6%dSKEa7L1)$#Co zI8!R=+RN_4wO7Pm7V>cV`8=HK??N6`*wKOJ3k##>DTZO5tdGxb->;8HCEuGZXP(5U zd9pq}yFFPyZ6AR22->PdFg?n(dFosjfWzMY_8u2;U}3ZrRc$^>uYialsieH^oIbFD_CvzXl$HngvUjFRLvpuU@=(8T5@63v#lnstC!K zI5PqVX-%Gc?ha&Wcy%(Z(04(G`CXL1!@vF!sT>+{Gdp3&7|B_jh2gb?HuDcp1r8_P9hPSd#UKYskkfnD1_*|BrqzT?LZ{pH>FKi#!+ zIv&Rw3=r`>aPTnnkB#(oJH76UF2+`K2`L+804*ym!Q+;el$C%pt+=odME9jRIeBx6 z=E721Szb^uuL1zzhU!acYbhBhbPI*TghXJJOq8sIMx;A3r@+aQm|#%L_1W1*RPhW% zAD>-G2O}V*AWhKe!K05Pp-4dr@<@=}>vVdbxU z$RhYV{)Z(zdOB^u!jnb#)5*E?YIZ~cQ~vqH)BL@7a;pmQeC(WJb{)eOtzsW#*mJ*U zdl+`~Agf^5-Vp0#*ntq+FUSv)mnzY0A(mP6RG%@b5inM8ax%3JRz<0cSHzwd0vnNI z5vZ9PNnDPQpaT54e{v;#HA(&1q@{p=wp6mU3_I_Vti=XiTHbaSJH#+gk+kdrc%=ej`VsM`pq7tK2LqFLuU z^qM-%I`yJir%p8MWOZpY6{YYvW$FWP-zKLet3vKx7)Sd(q3zqd;M}$8k3>UZi8>YH zX~6=@Qlo;;gq3Lxdk-9NWSIR}^Y%j}^(o*!7#$mrnXKTaPEWIFue;9du<5gtQxhVt zix|I$_K%JQ?5a>80>R-y=%OPleH4k0PVL>hw=0&Ao^qkHKV(fS0F1OOFY%dY(&3o3 z=@%52rH6VB{_0o1`sL3$`#ku2e+X-+;Y~N))POxOw|K zzxd~-rlx;;cXxL;zHcCht4;1v7|aG8XP4>_f~dkH$TVub5hmu4BMW&8&Y$kWd^s9+ zdjg*R&Y|%M4}@OdxpNYU7v5BxT+x2!g43;p+f<-RYf@TGBM ztjk=LM~>|Niz^I#gI2GMOoaQ6IC3uYN7h__&uzDDUR_yLmTfgXbpL~!nLBZoOP!7% zfBg2ZJa9hg6H^n|fcx~vj-1Opi_Qo@6q4Y?KnvknkDcpf4&p4AyAM4h18!6(@-QNQ z1A}(C%tshOQjtIqyD%&)49pOYEV#p>j8q|qo(v;6mOL`GUWr*6>tl%&%WFpthi=4g z0sLKry?EllzI}(zxA&nF;BS2cfG}oV=FpQ$HD)!I?V(^O2KvmH6lb~AYu9s@;(?nl z4h2}O(xu^1P>;~Ph+T6kl`%Ok}%M#6Dm7*2Tlr4SX*0>IQsV$w?z@U+#I%yRm_(2rp|41!V z1Qe4gRe=NmK0^3bIe*T|je0J#_$FolM8d>?$K+uQh}a@EZkjY$zqGQTpmOQv&B{>7 zR9bqIzPmfDG@F%S`T#CRBRDVwXGVisf`cnaQC*UF_dkHKFgxBG32Z>P}Fmj6?QliC=&^R&c(N-G6Z&19J+w+=TsPFGU>z7e;BxF@$S;LscgG7buM!%cM+NN&enzW=OG=U{%$$zR6$0g2KOn>jOC_T{D}%rY?p31s#om zjZ}y&y_z0Qa}aSMTzL-C)67#vJ01h_4wXW*%cNb3O^BK$HY=@2Bf3^D0j)?Ql3FYp zCfoLkbQ~lxYFh(ancfjRvdqSEPG(p9WW)a8G;2gHRy& zdy@9QISP`~29_IhNc&}K#z)6-7v;B?F>6sCk~ySlxgKUC%2C5-&<3Vf(N}JXY#S;Z z^FFaaH6lRcX)31EZVByxn-L_16m9XhqoEs#SqgMz0+H{Z@JU3zL@)(1wJv;sON~B2 zrAB;qyo|pZqW-hQ+7NRpF8Wn`5PL9jo6<#B;1d`96+UoLT1(@ixb`)#dCdqEu=9Cv zx?)nSn!wphw7N~q?`=qX-2^p@4~hxd$QFve4vN>w=llRQD`uSkNTm0FfFAW8M$*Ui zab4>pQ7^A!HL%8LSU=p)eq$=uAE`zK%;1W#5Y)!dSbuYKbAO^0>5D9u1mIqVokN6% z?e@s6$!3+x>rIzgQ!-NVt&SyIJ6s^ai5`S=wY6WofNqh8JXFbKFgGA4mBj+!A)tQ~ z5e5DrUT&(0`9}Ntv$8TQvcSNZL;J84+`AW~@{CLt2}{Fc2m>2&&Vl{0AVbTHbpi(A zsLLzF3b8ORJ0l|_yBurM1@p^Gfsrgt=2^Xytq`i#45N$`2z^@lqSZAO3t^93T3wQp zF?Yd&)vMEMOG6Cds`XiAHH(%lTDWl0Vq*JPR#UZ*sk0#)*Mh1_!0sxm7Az?(os*Y? z3&B8#i^j{gYK6gKN-r!eEAx(z`<2%0@&$`w0bQ|za?>QIr{|QGRxPECykrtpLSjaK z(VToo-Ky01ur&>PmThmmysvgIJ6hw&4CQM;tTOzX*K4 z!J4(VZl%pgTs4?g(I_8mKS?%c8c6Ch(hdH;hy|M|}! zy#L;x{`9B!-v97u58RynC;t5VcRoJV4M0`bnFHH*eDM0eeDAyIufM~n@tI28!I2mfGjGOPakD0mL#h>Jl1~ZeAiGc0H^UP!d%Ng+@W(GDqRWI5H9lt9qmk1ey!E1EITn$H`2NFL1*Xeu+w9 zuZ)Cz$SUY(@#i|NGB`5kiAv;b;7l9v-2v2AclYRM|G>xuwDs6{_xbZ+)wC&T=?8bI zgeLsyV)=BD86F-S3G21ito#fN9sqI`{_!!oi_o}dY*?-~s)2UKZAX33j{Wf1CS+xp zb&k5sWWd{#GjlOGb1i&|OG`33V{%D8KzR8j{5|Fr5YXbH+ zNiNqVnA6Q>k1s}GtKj&+nAeB=(Gj5Il+vij3FAuL>C?@yxgd$}h33;;U4$v}61u2M zT!tsX9g=CR$rc@K&8Y@u1cMT-3R_Mf)$4}4oB@mpN(~o-o`elIqrh^Dj49OL}gOMI9X*CIsNFgQm>FJs9F)BDvp(Xd9#*g-F|FCz!+gJyvaDIMv zdJ63PDTSqI(9**EoSdBe1Snq zT2-^CcJADwf;`l1UO^G?tMRfeOOu$9l4vm{n3DiUqG6OnN(0svK(n>u{LO|n_mS43^47Wo0`9P34Vt!5ca;f zjKWan!k<%8Qo44IUW=AYO3fyKesR_E`djY3@5^7>a^nqOc#M1eo)=a!|3WYGi}!qO zONm9za2l-+HY;Q5{B;klgzpb8%gZlrd-j=Uo_XNr>(;McTv2}g(gpQUqVkq5#myk6 z9PVdn6+!FaD8n9OKVG(FnF{9SV@gcRC@3p0hQKeLzhGfyMa{yMH%_LjEg0<&>a%jP zvkT|WU3%kP5bm26m8K>bta;^ioA8_4H{W&}8;&&A?LPpo;eq}8_UzfSj|bs@dic^gX~1?k#`ds~k0-M)SMjy;EtwRR)l{fPrR-}_DFYv29Wcfb4H z|LeQI+Hn9e+2^`?2H_R!YdyScFFN%0gD2Y{U(OxcbLiur{R6fiz0Z8tRtJzE(BvwW zMng#T*~_S3lTHH*asnMGN zXM#)7Xh=X%i9w~5_?)hRKA*;zoLM;sDo!~YKCRJm^QuM2!K%IO0`yRH~IvbK2f z;sxbp7>#A+6&SG6=gN^=roX&|MPsS2-i zXk4a_gbC~&mMd8&j8ReodO&^C$pdWioOD2=vlLi{)eRz7l@q^nj*JYt-OweVwE#bY z$BLJShXINh^Gkrj*T7s%ktfLRYfRK@705M=Y=o@Du1m-((2u)wk$3Zww6 zkCp-0=I7?tR%2~bU3(oOv93$8WMpUaMy5;pdGbP^3j@>Dcj06Zz(O^Fbqx?r z*r=z5qY{NihwurtCKL)XK?jf>r52@x4Q;vWi(59XtgTOrhA}==2IH1Hwjj^&9UJTG z@4gAQeAC^Jyzs&ckK|_p&j4AIpIta1#s5DOn_VS#J9R zm#y(HjfrmeuAP|2cK-Rp_uhH??LU0@;fL?N{p(-8`No^S_~oyE_s2i} z@$Fyz^0&YG>Fclk_}70D3_n`f{hb4S!^3?;ZhzEn40)WRF03LvKKEen1Ws))i!WNV zu(!ojB({hUaBu)K7BZCs{4bG2k%AoFBaNeO_*@?r*c})9`UiTuJNt**+lQ#zOd!IO z<|SwAxpRVZfv^}sKNDpr(hJLLsa&qoXf;@p%aQ#UMHOOqOcol8WzIFwLfDy7BOhcP8>b7 zcgK!>`wt%4x&0&N1L*bHi*DR}>n)pZz4f+RZ(2P+M+=7;HiiQv5iGT=O zokXEGX=&0{=@SeRoH>?}fpr9CU92QB;Cq$H!XXZN0MuK#f(+RPqlRKBWH_Q$!O-K7 z6cyd}{8~VS91NJ9d8p90nOEg6KeD#SDvdgpQcx1DT^M~)5!5SEwMg?@eBJ8n)~v4eOw&uG?_K`VE_IxnYWnwkD}@ZoqaBz)c%I0UngXup#F&4QkYA9c&tRYXmRDGCFS$=^XJbiD=R80E}LI5Hy?bCBt-B03Mi<5poS2A=*~%v zUluXUEw^%izd)6~{`&v=$HrUv$aX=VJ`3skvgq}SsQjYb_Py6<5wv0>(PtC1FQbhh zrLheU3!jMY{m$niY@GpT2MOE$j?a$0;POp6f^pmb9iug zJli#bS$_oM!{Y-I&f_Mxug~uxq0WT8W5|8bU{E0FSEIC85RFJH748*6${S}0V0&5I zPIPVg%ZuN#`i&4lx88c|O*h;C%EXP=Z@d`;k;oJ+GpwrW&SHW;3cCx+mH{G)N zjxAfZ+;PX|Tkyp#n{U5u^IZs%x@{AL>i6+rFoj{+gjV6b^YD!}NrGPg=OMUxx&2xE zX{xPpi~Qx7HcJZu*mPjBXISga*h4EGne?YcDT4;;EZNq;3_I8msp`UPL046XRt9p> zY%!bXaK=^l(^c`(0Z(U57A`wZ6kND`Gh87}>_k2}7l-nvuX(j>-3H818q837(F|qS zD#AKT^kF`QcnsOP^%_2dcyz$gAd#9$CuG^xj)oPnhhr}_5YpSm{25=xBJjA_m^F?D zZsQ6xrUSoou5u7UfLjU3@4b8?aiKo0c5iyz+vT1%y=eAqkXS=}CULsAq9Q(%IDcg%AHEEF8YAWQA3C&eAK}AeDkwv$m=`8oFRdzE!@cb- z9^YVB`}vdo{aqc+h+#f+ru95*ji*i#QhfPLq`24};~Iqq+Sbz2I_x8*$bYeeB20#z z&886AjP2`qT!GBT3BY#sea&q$u;C9H(%E-u{Q;gMlMMW{c7RV>` z`0|j`g>nvX~48Q(|(GRi6YUF(aLvKLy!Ii3zZn!Cq=k#7)e=k>9iu zvTWr|UwZuU$G-%n6Kdz2vhw-W)sl#T2M1TZ!VTs3#*sWa%^e!ywc*5@_BHvR5*$XN$ExRBk(v62mxyZj_`;H z`iejlWNGCZ=1hagdwP4jIyw#?*#6P(U3>QJ-F4*C{kylrd9t0>AX8xS#`H)8Ftiak zM}`La`v-fv`Dk?nwqYge12yLiOgUIqHDpkP!CB86uqIqiVEhqp8)7gsdC0%v@i-?? z!@zj}U2dF#F1MG&ry-TrY_X#9lZov$IWa9g12)}^WT@sQO5mVXp#^5Z%o7r@`~sky z3|r(iBH9UqPD=%oPN&st@dY+m_pr?lI4@JFpbDeLKn9=!nJgcRkd_2Pn%SI0p!Wn| zCdjg!3TU|%H!%Zx4wV{4IE@_gA?tw!LoWz=l=eJtX!7W%ACnQ;jR|rl~7{1KBDlLrbH!!Y$CK}g26OHR1K;HZW z%V7;+)^kIRkl`55I9Xz3Bu0WkauCY+e8 zK`!zMWZvfVA<{m4ksy|p@S_dc8q9n5?%scX#Mjf=-`RQsrU~AvFPA6{CX0r%l}-D1 z;p>froTDRy{rv+0DHc#V*$85JhCBg~*vRCp-#rmTJ-bIe;Xpa`gPNMU)r<3MR<2xG zlV4qxmynQ`V+eT^Fsz~d=#^mD$$+*6> zZV?D)>T3BV7ir%$)5#db@?d%G;>ES~D_7JlTCr-?s^(*R^E`Z+_@u~H= z!I}9Kwuuue_MY)>2!>vabGUZ8plFVc4)t}m_xAMm4fOZ8oP)icIx#tw8X7%dp)~&(1b?wR(^$=k7 z*R8`smb}h4--ert`9^xljE}AR?0$0o?EQHAuG2ju{ez=0OYk11mR6wY+S?L{{#mP3 zs1X^f)ti%PC_~`r5k8{OVt6DaG25{Yfuaiv4?qmMrM(kwmNfd@Uu#kS{3+BjPMrmUIQ}b`w?JEQ7I?{N#sqCB6HZ@M!i6MPeOIjJTx=~QJU{`x6>Ooe;21$e?al@=>Y~WVp zLct-WY*on7z}!pW7!-^r%1wKvd%Ctp2CZio-P8Qlq>l0Tv{+Bt81AWod+mFZ%Gk$J zC}4v*}s0h8zMd<^$T$`~;Bf|mHFY=(JHR8Jp@r1rm~p5DopG5;l! z+F~2?(k0N8@7K>FlKGqLf8rZ0fzFhhB}rovWUjJdM7yc)K#>Nz>2 zkwLQ}VZNjW4%eC`^{}|qlU7$ZQ>(kCCI{XffZ_Z4@XUuh6FUc-9+;$IScS_xUWTBW zq3&H%#k=V`n4GV>>COipc;L>3a}%Hl%w4z=^Tx_Y5K(a3J&!!I5+*^sxMxTitedF} zUQ+?Qgrgx*M9gprNkerN^#DOjgxo?o-Y2H?Lopm&C^yWX))FVYI&=E;(Nmb) zFhM|T6xjQ9S}h-Qc&YLkir5Mqf!ZAK5ej+EBU^U9dz8J*%eY1;O4L;5xppAf7!RGhShu=p4 z8hB%PRaUK{8>VPY%yg4PDsYl(RF^5QWs}M)k6(f6igu*A2U83h5B-i`-XkO*fhBkf zpsS)h(CX5ngpLXt?QzJ)6C&AoLL?h^LN*?TY&lxLVqSB51x)e0jZBP3m zkojcl!PY@~UppBBZ=$_i=@sj|;3q)ek!upr*AgUA=p#`HtZRssHNhEUO3HxZnQ>*s zxNcf8zNRvKiAbH6qPiI(^%@%UtXi^INiN7uMmJ2(ErZv+OwC{cz^JY8@mMEWZs5PW zef^a+>AGo6`kLDFC4zQZ&gw2>!&yD|gTgNNuf_^@wokKYv9U@(PS{0wv z!+U2D!5nmQJE(+7CFeEr#^UvB1QmQr0~hq~+h&o*t5#xoaJ)~CA15S(r?$^7mZ8*> zPCu#7i`Draq)EX1(b+vP+SS$B-PP6B38QvfYby-j7uwn`c6RdF(%6evO!QE+eM)2B zwIBNWK|xu67qBkGk&E}&PMJn7Py%1NT?C_Wdmy>ToTLP~Trjd@!#ZB8&BmJ+8qoat zjZ|yi8h{7UyB83rL%=xgrO3K#h;Tcp`jhLB z*;IWCe@6hC0o#*cG$&%A#M?qFRuh>-tQMXrh6DJ+o(cgAb9w~Sn>Z;?`Wgb_BL>^% zmDd0ThY$sSn170c`}gnP_vyg{fGr$8bP$WC0|yU(dg$P1l<6Na4D+E#ri=7lmW51z zA6AMZahc9?BAH${%29=z&{&wY#)jHj0OIQD-M1I@d6A*WR0R`6vjv+wVLs?=K80I6 zWwAuYe0Wj`bLi9b!@!UoKJTB+0f_}iT~d+aSy$vEd$BM|Z!Elh{ExcsVS?QRf|}HSP$U{=uMx9q;Rf zaxgqX1hA3FFidPnH{!%J>~sNlGveg0Kc1Io@b*Iy?H$O`J z=fv8z>1)@lS+i=@4O^-bEilmJ6c#=4_!Cb)`Q+pGZ`p!nU0pB;vmj)Rl#vi~vx4K5 zFDMWk0SzMLvBnY=A={!d1L1z_x@GlC=3lo`wxqlu$D*_wXTUZZrxgJbWgLglK3>6` zjEloTK@*^F>3jZzFHV=}_~Ws!0m1PS|9Ua@V(ja&Z}6`tVvoii!t1NCd+_=)j(roa zr(#dw^>FMlydK84590Mu?6uhKF*9ruQ!iIkczI%`*cQ`kyGNlEVN4PR!t3qZ{@QEs zJ8*#8+Sq8wmIZqQd@W&LPzkDDFEYVkPakAzaJxCs0z=IX+hGZFj*3AbwmP2&W5VqY z6IWCy=;Ni{xI0K-Ft3|5SAfr9q!{PXC;%fuNr;R#2h@b&^>|p;Of@0l0*I0yArpre z3na`iV;7p6vGB&P0ye;fI9pW&mLF^|F(B3#0m%Ld@Sp+(p;lv$7L1n}1xUv@g$`B- z5d45fex^&Zalv}xgNAeMCV12~tVfUnLKLoF2UG;M4aAL(X$$~eD$xd;(uR$d6gSy1T^!$Q!n4HrR6Zxn(vMHq| zr{!j+C6XbUgsjP$47DU)2ETZOm8Z{_+Eq;eIwleEBuirhF(+O#(yK6LHM;$ew8aJdE`ds*UX2^pQm5jnfU7?<`>on zN|Im|qZJh@pT-tvghPTXCCjjYUcP+U@>&FdEE6^qYY`N(bm@}X+U2#_;k_LDc$rQm zRciETO_>5<8I{y-oB=^;6zm-*Apehx2)I4AI!#vv&_bBkeIc<~(_fj2MCQ9RPZEoIi;P_N2wK;l4FG_rd+UcI_(Mz2n2* z{^Tb=`NOU~?VgE2Z~CIDS*LhJG7BcC>SD>N#NQ74~$Qt-G*cn%Y3 zL4af2yd`vKSRe@>>W5XLAMj0(LO4e;cZ@pSkPPm;yz8v(68dfBXDUyZ#FsZ@&Ke6>`8+1bm9dYPRZS>})edO+_^j&%CL5dDYx!pL_c0r(gKSeJ`y< zW^=q0FW>itJ8xNi-xDi7QhcK#PC-+aTeJz05TpLgh13^j1eyUz?mxo6z8-s7+F-NU8g9l9 zU&2r6^-}CMGs=pXH3my9W{M#H8jp5FPfWkgqcjlX zVv3kFrjI4Z%40Xgp0fz^$E6bpZ<0(i8Z{We6lsk%B?LB2t4N{{ zFWM3?seoS|keie^=LF$C-EkbH{AcO}8!0z~85{N4XPJ5G z?)eH#b`ReFzytT+fB(Jr+;`tSU;gr!w|@EVFWimo-urOyD_^3f0~%)27q;B6>E2szz5Ujev(7qq+3L*Zl$>0It{^1K z%xAYmjUm1)IV&UCjH7&>dV`6afAKQr98Mk?>K=ltO-`~R7zG(5tFq{V@A{?!E9 zvR9=qKKI;nPp`mq>PUb5tKWS5%eQW*y~2d@E!%?RytYr#f{+VTJ;c*Q=#LV&|(aiF0d}d)@ z!OG(Mm|6Z+G_(AxXl5Z}c%8@?PPm2^C)6G$23DbqaFCrlxF1O$PMrMXACQCPQ-t0{ zki?=7p0vJwN6(!*cXZ#5_oeT@zk^Z1kSjKh3ru*|U%#+0KRYF>Agds^pt!g=H?tr& zE6tRcSG@T8%uI`cs7+M{3ouYr23s!u2R7#!rt$p3J)Q7V)?r&%&G zBEVCl;8~D~ZXSH|az5oLbBC=V0~7n=ic2!ze&ZYH2Twou%(icC+qN1_EGQWbx!az9 z_StW|xb4X&9{Y4xy~>CK2dLC^*wc)`ea1zx@9p8NWXFK*yFUIWynm!UAdg#QUDj!pW)OE10n z;;Kn~$|idT{qcpDSM!<`8Px6amtVO25QjsKvQj~nCAh@oc9m5@L&>xOytNn8@6b>O z^bJJ+o;eFDxX!Mwix)1OYiT(LEAyEt!?zrbtE;V5jJDC#0za?Glww81qX7r9wf z(@4_<6|a15mYE3VlT(WD2*t%jwut6RPJ>KKBVnJCmY$WDmzQ;A19R=Pff#_D*y%Bhey45RJu3f(Y3&V};*8)iqFXMKvVNTAS!+Y$?%1TR1 zYvyMe^mO-0&`yC7K{yU=Nkn9sl8IDQX&IRaAjr$Uvh}!j+IsxdQ;$CVG>AZ7c=q{c zwn18M`{pyxJpDA`FP?zZ{N}UIBNpZPXTNz#**ao&cvm zmJ8#w*u?094it`heb9jrE>0$~D`7I4s!)g5U%z(s+Uu{sfshw`#Q&P>>Q}AXaP#Kt zu0urvIEOt}*6}iG^cvudmh-0}`_5dv2z1893oYl+P0yY^bKwGJ%;qzvf%~(ZK64h) zzh~Rw8*IJMPV%$knivfb(84|d{%aTwh}d5$h0>+D{G=m?pNmgzW-<@oEIvu_xbT|IDz1L3S;}_85pavoDcdBUlGM%k>l@ z9quv=F@VBWI8mF}vITU#)OvO`!|wPYT`%-0U9U|FQj-Q&n}Z7qSJXnDUx}kf19?t3 z6^-bM8nHZ=#7Y?p&>Y+_a2~82frAY!TaWT+Isw>)aB+muOb3h1WI3z_lZxz%j zNM)!f+z}y}uY{XXL$khm9r=d96$8E)REtT?RG?Uk;`s^Y1{CKyNKImUh%&W7;?82E zlRq7317W_6X~9o(#+fk`r}z-Ab~jTkCXNQZw8f;^P|sy6K0qS`EK>MB zj;6kp%g}3UenmSz=^M}bg$n+Bt}u_z%X3?PpGu199U4x!!qsZ*vqV{>yC{SrVF~*M zhSfjFJ_a$!9i8N7(=$5APQ8*^j)PTOxS}fi%DsZFNPS#hAMfFpwGmo8h!#hz2$##Q zM>kl&K0p^e$Gnb;vFEASK|8)el~Z;3 z_g%$8C)_~0FJf08dytAJX&0cKY3eGMx7c6H#O&i4ru`MfZZ{5wX-5P57oK6dj%S$8 z7)LZaJ9iBGYxj`ZM)76s#g_5R&&kE?Z47H(#lCPo6|S}( zV`_~^W~>*F#iiA>FVd>>8xyV=upQN0>bR1EvF;Wtpp$@y6N+a9fy(?T2tAC0+9+}aKXLe2OFseWoFhk%A3b{XY-j&Kcjo|c z5Dg;uabjrH-QEqWLU%jG8a4Mjp*iyLTNq0lVF?Bk%m-4}bdOpWfTCch9b$ z|Hm)>^S?fL_fLQN;Dfh+_q~61NR+5u9$cZ&YGV;UF6064N`TlxM&0hA(f(f0O_TLR zi_8Mb=meHvg98W;K@v4GtxGjVYucCxYC#cN0;or?a?}-}uI=^s$J}%lS1>qv27^Mb z3$Vc?CDPua?T@8w; zLWF)}DVUX6gtcvET24-GL4HnFc3y4{7}&~7bMo>F^06SVtaQ}DX9miW;i1tH1duuj zm_9KM?=Mk+c_+LCRP?$BF$(c)un~-nlWpA($8j&<0>oBTi7$E){Nob9j!qXAX}ARt zMc^h0EhtyI-7<{=eG7epML0(6|0hp5uN-XLED)I-tD^BsV-9FxZj$g8sTJ{mdP`uT zC0Ba6C(ML`QK#G0+tUMjF&7enJ4Yslh6nrm`n?kYZ%pcxGcr)Wl6<6}<4pzpUm$~J z?L`>m_&a2s5;ho;mB^Y)f)srawniKv+^JUMcoX+-XJgUV81_|${T>th2ZsF?RPw1* zQ%%(B{7SS@L(LEQAY&q&%mzYm2;LaKlAZbqEm*&u6Nw1W7h1|v32$C@3VReoGq3t> zhW++`&sBL3!`C6z9uY~kM?_NXE0Ahmhg5q&B-I`gNj26rVV@t3lJVhUk8=VI0a4mF zFv2J!Dji0Acw)4t?cCT1Ort~H-Q5HJFg|+*MjZ<=*&sP}1jfps6WP646^C|ohjb1dw%Nc${dn{pALr-fsH++)bZYfVXo zsTqW5w2?Iz^MT9(<2CYcDOI+D7_wvS(BIYCeEwwD&~SghGYhF=B~rkN0$xOw#{h@J>LE%wb)yPIWJ~p| zLS~=Oa)KyEUD5^;DCh#f7?J}MNDzxzr%$jZ!5*Dr!2<#^u2VS{y4}7AY|E$_9%P4E z7fGJ`%2x;hF%%;Y9*2 zLpE?&5y`^DP)(xtIOr_+nrfC#A#q4xaAF&YLY2PfD;NylF?$-W%A2O}mry47jfOIw zI2xH;-Q9-qvQ9K!HjBo~W~>`FW4zof8ZYZbTKa=FUd@u&^%257 zA7g#eg~P}Rf(?CMtCd82&QZs!Dvm)PrALn1 z*(k^^QM)KZxRK(h)jMpUAt$S<%QYTFrgUs}R5PBlQH7j|P#1&1TRHGIF?(_h3tIHt z5Ghk=RdglVP(?Nc$hy$^aX#D}7YTVs;7A$>QWz?HC31NHjv&$*gF%AP0deXc9d&R> z7H7|eR>@YLcWQuIOUDG@)VYeao8WXQCq@pXeA zk++(j2^-ZL4nuqAClxyYemJEKoiJk8L&ETVjqi4`u!F;$+aS0wk~pp@5giS}0M`+1 z7#@@T?lttgABy_jYodPlFv)4GNq!{icQ#SKV@G0+dEtu}(7A?2N68Eu4ns|X5;x*@ zQ~d({25EpKAHzLlPwwg)4o2*z2=JcJqXY!!a6cR={f;_ba{GNUE);b_SdW9^Ax4R> z5R8a6@_P6VhH2W5KlPv=AwUMr1i~3qKSYvTBmR$rm2(bt6#WW4ONZ)rEWn(J3gjyj zy(GxTbinsUk{V%=O60dec4v$uv<>bUGDXH?@f@~tl1e~-b8?dYm>Zx3pczSklm02l zJ0uc;s3V>@)}91bBQrT{EdodZj*=7*TN(`xRtrL>SOlX-tCbsw?w0;qPWPY&l@Q4g zK4c}rNReSi*hpfa5ArTe9vDdBE!4dn$k&U>j+SGLjGT*FwN7G7#y}yF2N{gu5Nue+ zP|zY1bEHTx?WjmHBl?_APD;#;!1bY<=H~E<82%EMBAG_w4N4GJM-q%sJ`xV5iOg8Y zN4b)RhsMSMy#=4^gb#YyfY*gYYEZ{=^fCz+UHm-6gmBLi^0~)+K~8~C848#27vw`E zqkeH>es}4$kmg>v7$m9U<@l!KekuRZPc`0)#4#g|^PG zFzBbktbpI~hyn8RkdVQJ_?2OdlIhTVj82LkGQICPt;s1g<0z?AMR;XV)rp4$#l5z}-IhRYP_(tRb`B4^XektEZ-b}k;_!F~cL72~__Br_ zWm&;s7HSmo37noR@&aQ9>KpBUBKnF87al{9jRO@k#E_dIF;R4?C_}+xoTH3ZEGU6c)WVM%vM3-;4-6(cB!O2T z#XUmxfqW$jTZ1Dth2%5e$FX=7`nzyIB1usw#>dBkVWN^ACHOkg_4WgY>>5c?M*W;# z3-(ON7>q^I$x6HF+WComZKyQIBDnn+VUG)K%D^b`;UNFj`#XrlsD zF+S!c7Ph0SVToZ=qF>@7=yVzBbXws|C?L3pPRx&SoP|xN+ZFmOzedL*9YKV2h=!pG zYBIVvbhenCE@V?nV@TZ#@dce;u%MAuniKU@PSjID+{R}^;zYBRI3l9)l1(_@MFyAK zI?d3@iWoZCjBGi(7CnD7-t+PObkBeC384o0`r+G_cC<}De!MI`gda@(mp&)UH1aRs zcyTa&kmGa#sGM@JNL;wkei5xv2dE5;fG#I8OLJWp+j>2aap+9Y$eIx-%NO=JTkJKPs$y<-#pQ7og}BjJ7==8t-Vt|5PmZE+0t zvdm1KjE%^Z9Ff(IIr}?1I@-IP69bskJGwe1I(Tn!r{C`$>%D*ja2t1E)rLltvhWTy z&H=bb8SzW#t%?Su^u{&Aj920xkJ3Bj8uBs|w{M2tJyju8lh~#^CVw22Mbm~*gS2$G z{O35Jlc-b@PAwseCdv{er-3Peqi9u{6YT{^yG4=&_;av zeb4p+>@Irmghmk^cYbe%XlaK ze5MmJJ|^8@m#cTE4xtmA%s5ei(Lj^F5@U8A8U_sXNebjifnin<92hC9f2je72C!GF z1N{{p!~-|HnL_k3lqP*y_LN}E->ku}(v*Vcm8k`Qen5}=a;6I0Y$r)Ypl7Evpv zVgv_^HAP|(asu95UL_G?CrclW4`UmvkV~u~QmSOl3~9lK9z^e8?664Cl(ZAQMDmzb zLpE3tLb!bm22yugK2Sc~yFZZc?96yZW5T=#DGu zDvT!+H`}0b-|=%v#vItO(h5L7_4SPnwE6`L7Bw$kyrgCE;sx{PHIjG*d3%o78}MT~ z7qT9qW_qY?P>3Q-f?ZKDIU+SR4fE#BpEqyb!o_4%)z?Efx@3iSbR6Xgx?R!2F{~hI zPNMx!O@(4k?8y-I^%&|=cAZYhddWn@DTq89l^kmHXX8SBi$8!Xw+SDvBiA9Nn?U2G zHQbjE=?g$oFHw(v{2l(UqJ zW`syxb8ZjOCmZzSpcp+QWaj31a*K+gcSgldBx6ZGormp)+D!w-FOR-T7C0CW&G^DZ z`;J1PAjY#gd#=JK{6U!4NG=vpk?Q!9E#{b7^$mZ`s{fXZRsa53Ey8dUtNw#E7Q@=s z8GYCA;Owfec~S3Giy=#mM(~(qBleDtA|qlkY*P$dv2G<~z$1I3;}MMs*wZ6Aa3GST za!7A4uI!%CKxpSG_$!C0*B*%i`sx~yugiDzMq+Is&_5UqP-J8>CK{4OJT^Uj!EhUQ z$G2n@l<2?&6)nwXEh!cVRZEq?k|egtfRsd?3=qE%4dBEH{{s3%T6cF>S67&D1^g7M zg-5McQHQffL?4yr^IFX#LDA2L1c%E(+3g#FGE>~Dstt3U16}NP_D)Ud7P9{H`lFYA zXD_?JQ;==M`HIH|wSOuw*~^U)J=CdHqQ9V^dMTU!fj((&z~Y9o+XY^o zLIGC9BK{v=amu8EWyBK1HqUkoFLr)TX#?FyI-^q_^p-!pZ_hU3ZOh5UY&YQm1X)>n#UM$f5P2+3h-v=FZUF`@u}O@>e52DT z7HuTL?NIJdYclouWpscAEFGK(G7eGp+1E{Jo8*_!OcqRK^aiWgM_F)JtDlnxe-UXj z5#qT?tYy}DD_qzpBDma_VYi0jDkP&gmqmQ&ffbP>;-qlk;=m1t2Mcr7<1Q`%yh!s& zZC=0wl~h+`MHQVQmrGNPr+TwmeYI0YF&48pd5N>6cjf0;o#0BvmyHXOT_f{umwdf# z<^kVj93>n1mWTw0CIa!4h&o8Kq0Ek8{>M#5L&?mp*=F=*gH?AbZ}x_aq-wBT~k;S+rO_uU^x?Vpng=zWOcodul)Z9BJq6 z=;$9A=o|S7{rIb|9zJ{wBAUa85AA*N<-ITOe)_3j!eRLH|N6myeeXNp`R;eW z_3!`w^?&}SFaPU*{Nl;q{N^{$z4FR|MMue8g_SD|lYBH0nZ(9dH9(Pk!rY-MGQDw9D^cjOQjmb*GnI8IjpV$Ji@j(%oz#XhcOGt1KeJuUD#nm z=c>hZLy3iWbSh%a3YG?Cb%(AuIK2Z=p)k{oWqt4in3`O8(rZ^4!HXBB}93KkdSmzI}T)YL9qSVJ+h3d)z&FIc*m!br)o(s&B|pfS1w<=sIi9Yby&G%IL1*=a$T}|3XeE_ zA#MsJ$2`%g=FQ)JM-GK4CMV<6Xv!izI2JR+#r4GW62~!s3QBx47SSBzCI%m469)y= zsACk_;1;p`a62ZWp-D2nFg!4PtY&MK(-y^(iss2$?4H>XWr~FKoXKUf%<4^a6rPFG z6q{ULW6QfLS3;htSJ2(pGvoztD-Cy}e4PL4naBv)kx8MyChyYJdM)@WWxDBmd_J8HC~Y4;tft?*EQ-4d7@rZ@e6q( zpOn=^_GDk}X>#5^3?g299EFXep}T#8y*37k&m=$L!*z;H#vVH)I`B?vXL^e_UPWy` z`N0n`n9@T_2A`UpTnQRNdbH`fIKz<_)NAs{2bH-eA7{2BjOEk%AWi>>dO=>(chpc< z`k29s)Wg)2f4Fm5IN+IN4U%Ft&{-71dRZ*_9yFA7C_&3BVb!dvu7b&5aby-QBfBUY zwOPdmOc58ftAumZQ(&uR)A+Q&RL87BjFJ z?l>-bgU>7C*{Wl(@!2XTJd%^&=YFYlH4{P>(Jsa*3flAzs+{^~HCW@i&bASqZTYO{ z$FOczXVU`cZ1d3BN;5n)`58K!A!=*$CX-!Vs9@a#<62P>S&p_;G=QeldGb`m?9Ry^ z6@GBI7>G8EqS2k9R75D6uw*$z9U2bB;$B8TcUR{`LTWFhR5&Ua4dEgXL5G!w-<_4( zK;5>pXM@oM{f7mE9yS$_(sT}UI5*gT;>fWfDH3kRkB$pCyHX;4C z{NyAToid?7NMlqm0emvheWiRMm2wk{WK<;$HeAC}nt^86$;Yy@{VXx0Z%L?zfVUou zL9|M9SR9h>kd>9on-rhU%5n*(0#>El!x5RyLk*21Z)RjYN6E`}}53Bq- zE0{Pyl*pDPyA6X#lm|I4Dm}@$8~ifd@{<&`;*uT4D0gfOw;5(z8}*E|B-ccYT7Cqv zjDK2P76-v%)Kcupy}N~x=Y?l~_Pzi2gYSInt6%#XRH2{y+-LvgYv1_hx4!qIpFEET=)kEn zC#hW6e){z3 z&J%`)k*ZXzu7n1%U7qYL5Rz`I2F=G5zSE$4GK9WovqyOrjt1P1K7vuBu2~-R%hvlq zf6mn^;V&1h#+UlAdQV21dI@c2=JMq={?TUo0QOcd-+mLhPg|~Q-LzpvQ`5Y<+Op#6d=L4?#U-Q-!pvN;ay1;j zP~o&JzhT>rH^Ve?t9N`H7E~srVs$myB)lHSpCJR(V2Mrga)hVCnUZwHrXao1Z+c)n zILQDAOjJ*dM=87%2UkglIrz9}6wuIGdBtvZO+5UN++6+I@Cxd8H~pO8B!WORLH#2< zru!(}b(|VsP>ZV!5cwxt`H=LgY%CI0Q|=m3M|@5M8E>G6h?A1{+p^dbl}OyQ1|L=y zJMzH#FZw{Pe26#Mm-SG-=i~Raloz8wECXa=gwRqyqhkI`3;?#MGl3PK1upF-tJ z&^@Amu>R<}gg=Wy7iiF|wS3WMPTkHe_7YZ_bJUNdVo17ZKPF^>nFVqm(31;XE z#tePI6~?7vwNQh#o&3BGD4l{40iR6ZUNIQaA;N<8%95oHX+*e~GNA!V`Gt}(Fr$GO zr_>`Jp8knY%7pWy*UOU;3>#E*1I*Fr7yUBug`osV3e|fgiaQ05=2TM9Td4cILpC&* z9-(B}$Vf>5=oc2a5$PFCMF}}zNGTOU0@4pa!OlQ)&7qrgx3PvZTTr z*)gQ8xcOM+%m#nHIU5~P=q+L~ixo`;(x-$Zb>mwwJ8iiY#b8mGhG09yW{Rp{hTTN` zlDd%$QnT4-Wd#li?iRBzCyC1dl)!Ae@80Q4Q5Sdag{!yJY*n*#TBz}|l4`o;$}_&DX0YBx z#{6`T5W7MBQwR(*&I_1+xO$s-O;agA{45SJqg9)&FanDFPt=s zpI9r>f;NUpjK^=<9o56+*!mo_^-( zCx7zOAO7fj-}}yg{rnfdeEPZP_8vHRx;v4|k43<&1kQ@)-P6;FtCO@>Z*;19L%4X3J3YaLMzk36qyr78P5W=c$5`O zZR8a-OHi|AFahFXnAo$?FL&V9#0`L{FO_OiK8)D5d|nYdAL~X|r5JODcZAqoWCR=0 zcYOu&E*}zoKz8-LTy<1+Mxr+udGHkqCPMzDPaEkZulV>>$|pL9gp7*h)6-WXC!B6~ z-XWJPSE|3Ou0y1x40Cn8`j^s^gr!AZW;W0ps*z)uqte17O=nEErT(iJ+76!2rO1$SYo%@ zbc{xlCHw5`O3wbwO0InwbkZ+a$q&x1Qm$0b z8jLaHhSMDb!6bq;9vD2sk{=GHjdn5jN284L&{$s|O2Q;8+QSnn#xlF_-+r_HOVY`z z$v~37>875l;iSKveqDV`Mi>XMiTGj1gm}&dy_j|c0N=t5kahxC9QIr%!EM|{7BYCT zIBocM9hmiDSs|sMg5Xs}-y;NKH{0wM@ep&r8LHFfyO`H}ZJG{CJo?-!n+LI_CJ;kc zGdRTn1r;!{NPWUPiJ}DEQm5GYiK^((;%qBwDW?Q~YNdt?+ zz*5dx%e~{m)D2TA6e5!QMKnjQNN>v`SYpxPQ%4WHvS;^8uN*wM@1H+Jl$(z4q$MyI*?Y`DJbsPCm-O6P`uMO@gV$$wEiFvMmHs492Oz z_~aCtKr%HxLjDtf8`i5cn-)?^X34-g=M;I0khsV>t|wo?X2rVj z>ubx(s_GXln%{uu68p2H6bS_TS6OL8ZB0#GRYgr*V|~;7^%Ep~2<$T)K|ezwBb2XY2Lp1wx+~`lt~lBt48~))*Nw`n!7P zO5hCnr=AGe5G#T#8mW(!%d)_}T0Ewg3AI%4u1_StWG3kkPW4$HSVX)sRT2mTv2L(( zXi14D%{F;aURR&P3}Q!Ol$5CJYIAg9$-4}K4>XWie z$d#d0h@Z=h&8ycL5ZTS*fbJ)Od`a|#C>i)9b%t4#<-bxFv$C-XJp>eTi1_Dt5MSar zMmb_(WO(i(cZ$UZ?U1{q7E2aB8KoSPkkO1#{6NHQ8XH%-QUwM1rt$;FBJYLxCvuC z5(`00m5O>pB6I~4H#IdeI)vaIiii+2MJL!FkHk6uctm-6&si0$c8V9+P4UU4d|mJx z;^7tKcQPtGmLY_IMa)P$@i8=H2`&-|4`aK9{gnOHO*#pfVd5lo++82~=V@}HI?f2m z(Fyj&#shHI%}AjICq{aDdI-*iV&EqIUPjL)4Yq>^Pm&%L3JrIkIE3jrGRW!!edZLK z-jN8SVQRE@U9USZj-|&*r$S;?2Du_;SW55(+-3>%k~$I`9~v4O4~95{*?s>z-j0Jr z{$(~9e>2ZzaLzQAh}nI8&xnmDA6GvEoR1-+W+i$rK4Z~6M4ho`i`BsxLVyaq&nw;n zvw;cR-z#0gqVi}x#?&X-puHw*&dtexO7L!^NTHNB-GGv({jrt zeaSaO2BiC5`f;|g-nlHyJ+v;G-i01vD}zqWVxt3d3JS|A>#NEeYDDB#fN?0TEUzH| z3N>|8ZE0m`d3IKgTV;8nDthwDE6S@{uk`ttbM{r+DNVovZ(PH6mnk2)26b&^pASSz!Zjo6bh!0@?R7mIC=EgiG7g1zjWaB*Is#! z_VTea9bK@Lf)ol)bika{)pfc96_A{}S6(W8NjT%5{pru2{Q1v*{F`T<{J{^NdF>!} z>MOfnGy(zedF`l|l!;-WQxJ6`DqEHkjVO-fC85OIY%q{gqhu_Y!q3Vlg&Tcfn2rS{ z9Eld>!zV-^Iuc>CGoMn0gYx&bw<<892!4HVsJ>C%BE6#8OxH}mFs)czMfbRs`AL0f z;tW9WJnp>wTn{AemDN-nuWM+W*92vI;}Y6DGP0|vCF#+U5+|}dA(bvEY$z}@G=?I$JQC5ccw#IHJVZ7o&UYCtG(3(P z*mx&VtT3Wa{5v5hu|N4UpwRP`oZS5Cd0Ha0*jCo(P%j@u}hb;?hF-`->0B zvNk=N*dmWqztKTzxX93wCQ6XpCe_%=>kL8JaQl=4mRF64Ho2QhR>~SIzsv^vOnpb) zX}$)>5P6KETlg>`=i?a_%TigTq5~-9KsRZ*P>FRjaU|69xcp+9Q{1V1jEuDuE-9uF z-;^H%U&CXYTPButk!r~#p(-^2#a=`A^yam0qS_ISKBC6P<)_@)WSaLO#t^U|n$IMf1TR29bdTL@Y~!6%a29 zRk9{)>DS7sjet=)n0%5v_Od{^L()ZL^eXJLWl5i{Q1o*gV%st*jldgAOf zCEX-O1{6v^Wp$dp*v($e!fP`qN3A78kJ2+rqoi4%I(6dcc)ZOSn;1s<=ov>c z`+a4AyvMt{yN97X4tAdnDc5#%tp5yJ*G?lyNWk4Yvqg%7pqB`#&GfN0^g-h%$arTE zq8iJqJB>)Rwqk>@kkCZN3rthGMt0>mQ!%k}u_EJA3l&QVwoaT%d}L=1*}QW1WH`ul zF&aHYD<`S>Et8w6J=X3qCxbzHiA);2lEfvA#D3d~>0#~^{$4f0#eV^p1YQq+CEj5p z^%99(Sd>OkEN5$5u^AEvaI8>((6~Et0umMFe1*t@p9XJi2j#~vqYV&~ zmry9@OXNWx#!P0q{R z+{et!;9FW}a#XbWom~VL^d=V~k%#`kc!<-Y;=tMVqY*p~3O(TW(Sy4xxyS9Nco0qV z^guAdZ7@#t^-Bpe7!`NY@utV=rAS2d99+$kZ-mE)+(+_qu< zRxe$;v>NYE3i8pK+FCaOvY5NJwnj2k(rvy8#lqur5R1dLPDncD!wU&SH!I;Yp(G}J z#Zqs(bKky0{aW#o<;$yJd(X+OXjxp~vkbkyw|jKV$Mn_zw8ypBj`>YU7=|yJA4-ss zzTyJpKayWAMZZ#cJx9M{<%LoYc!~KKtFycz8m|5Ud76g0vDa3>y%P17v7&lUxGR!y zfT(%@ht72)`gsmBVL^r*ndSm4$XE{wGUSNQ(A6b>{!iM(2uvpP^4K*Rn&!u%HMIhR zlMBOfU>Y0i@AqNg_&*8l69F|6fcd0DW~wn3_1nm_l58uB-xiGz4p^*HK|hT1IGXs= zc{GJ3>&6UucVotRZf4zT#oxPic06huGS;m+>fqAd*~!V6Rpc=8|Lhs?D#^qI670kY zv$_4GpBz*~;VEcM+s}rQQlBbos;9fFmpIR4G!V6-U$Mrq$jddA3QUK^3K8c9grvu@ zT}UvS)n6y`7icRVV7?0s-)c_S6hDZteO>UR9j6=sH0NtI}WPHB0Ow4Y-E74!I1ap&5NlA#?+oC`<|F3>=6c&^R@I(1-3M;36%h zX2uFe$f}GHvNB_YtYSr6#frEpVQc&=#Zh>h6)F--`fzTTQc-_N zAV@MkhYy2bVlA5lv)GTpJ2dVuVZ;#SoeV}aOe`AStf&dpMpB>IR_>cM?&!vv%cyu=IcO|36q}V$b2z#g2roF?rL;F)!R^#6EfXPt=o;F3`c?~2Ibb<8j zl|*m2%Wx?*7TOIklh4;Efd@SCqE5$R!O4VnrZ1>v&6_u`))VXA_X2JAo>yN5 zaKE$JkyI3h=EC{Q)?N=3ar-T|l@MLat87}bV)g3P%jQ>CEZVqbb1S^;>ua?e`Eh4S z!@TB=H{EvIZQEN{ty)35X35fq^78WP#)XTQw#W<1mo9lC*OLH(JvC*kz4pxyec*3s zf7hz*EN?;(S6$=1>8|_lzyHnGEnl+jt?&EOcT&mYu~piKeLibW(+2O&Z~gFf+D`db z{hN)b~IJ|*lm>R7{I@ip>gt-(P{dIQ`!lB6kn!}^#;w5+R5@2Zo>e_&=C_9^}_Ll zsiMSfZELb*5%&`6et>$)O&95(Tv^7~h1$jj^jkB#H2Z~43KzF`}oPU9{C9TDf8lQi<1*|Ci z8sK3TCw0CSs5d{RkJ?p?+Laljc2&lxooltv$K<2QGCDezNc8mdGI9mbk?`**R_s+- zSve(DRc5o>1=t$3E@d$L^YPeVh>8&>x;yA6bV>PE$`2l!Q$!sBDFy;w>@(#d;7hFX z+$OPdC8z~Zg2^ILKBK=xR||+I;YmX$B;j#tO5l&E7Er@X3=fX6e6yZIEQ6auatuR8mK!BXP!y_TGn@Bh?GT<+fi;&d}vs5R=L9=h)gB}`g-r+&bcz~oGatbxsW#w zongQB0)*`R5bq?%Quk9``0;wVzmkPvHcRYVc`}4d)L`K5PB*_+YzzDdw;r^cP{$Mm#gcxChTgc$Y&7o4Wv8e3MW~>IL6)!My#i$Xm z2(~k%1DpYY31$jk;|NS1W}Ckm{s!@&NP`priX3VDw77Qg^`W(*3X{r%2&H3K3{yK1 zRZM1T2YCc^rJUX3_F)41vX$2x7b7NHGVb3&zPa21`4FEJ36S!Yaz^TlyeeW8t9Jk3VSIIm)CyN`3vTYNDipMS4Wwn)+b){J)L|JG> z9=lPoXAymL`*tjPVfTTPeFNj>5`=g`Z0O{ESS^m9ba}8Ih+M@&Ks~6fI5swtw3+

(j}pO!p82 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/vR&I%)p{3Utx3(lYv|j1U4@&ff9fd&)zWzUN%Y z_K`K6((m{C##N$wEhjp6ob#UdyzlcqPtEOXxT5+YvB)DL8S%U{MKFHn?ZFP#UA)-V z*)!1Fd>iBNMlA>_v3eVUW6W_<%swJXSXzEQm+J2esp8tRL;~tk%iw^{#S5Vosje5+ zc4#yunb_+PsD%Ra-Ufw9U4?6MTzCLNFbKkMS-$h;FJ88E$=t%c8Hu4pfCx;hxSc_v z%8VIvR~CS1Drff6HEY(aUbSNRvSrH_suIlAq9yU zvBCISxKK)E5>buH&tNeTi#%G7}<0-1MlDa$TrNjgg_UFfx)04}W;?{wEJS z@q_J~w#pb%&2U62&sywa82_ORsHi$OrX zyf`DyS3iog`Rm`mzCwg$YHGNU8c?ERJ9q4Zzy9XggNF_sdgj^Zo`3%N7oJ^Yc-ru& z>9yCe*RT(NAD3_kD=I3=OXnF581~~M@;V?m{GW`*u!B1!!U*toD+?g;GxR$QLUhbw zNL7*{T!HDCY+`Vo=toi32Z=EqEG%kH(F5Tm3=V=Y4@OEV)?;lj&;ZQ)jVdyaSKlDP zR8*fdwbj=(gZ`|&4Fek?@nJoIc|h?RwpUjcKs1T@N<%2o<3I#EV=z>>5R5rGw4Ref zwHTFUSZW<~RmH2KF^(dmgSad>y&)J+QOX2WTwJU|p-{%+fNZMx#3Xd6_*kV16LWk* z5<d@x6;0-#e-CosGH{gfjzU$?&eKLNw^)xt1|+5}XC! zKihVze%NIQ7F+MdT&=tY%U1(MYA>z~y3eAB^xS+-78oMzYP$+h{N<+ZHZ4lXj#r*1 z(%uB%?&9W)Iv+^XACxA9@XKmfKQ6&%&fM9vXJ^Xg3YjNvvuAj8YOFlDXz`}qyLWF~ zyr5W3w%lYDvzX(QELy0L52-c7kEGO0L?i(W2c>i4 z$&~2j70Ct5zW0MYd-klFF>7`{E-oN8H)lz~j72;5&t+a={=~n2=CS|L@9iSnhDB;- zKN@oljY%yi8XH=ESME$@MBYkNm#v+j;3H-9Ec}!Wrl6V#Ys*pnLFsF+eO^;r*Myd$_>+3=*{2Zmkz>qi)9y9_%G595;^hP$cPJviQMxR3v>@!#$?{E&SP zWAScs8lujzv7Ql$033#$O+#ZCj3_7X8__dV5!gYI7zL|_itJEj2%-WgwHq81x{|p) zGD#VL;;g_xi7+t8!`+*xX?u7GB_82{h_wfXMMi=5m{VwVeyk4Vl<3uNexa@+bT>Wp z3o&($pnFL%y9)*7E;_>~17|>gFgr*UMT8JTJO&5dJxGmfcwAJNECS{)$kP|hp1wgo zSlGBo5Rm1C4#6-5j0>k68j-rlQlXLQE_L&8XGTz1M40H{n80lj8cdNb3^7Dd*oy3} z`yO1ia>bHWt1>fJtyu;AuJ1kZz&&?wzVE*K)-2z$bd5 zIf-#|5##0-HEwQG<3{ZbbxD+P`v?1ngb0Z{#Op7JI-6ncM)hJ8H%p{J;8DgV1Kk!C zJU15oCtIufw_WrPX&2w%#?b*xlr5+#CZdTQ10!ASbzK5ISwO-8W5pdrD!Ze-!A0C* zkz-6WV*r>;GFl}7P=`l_hed_UpkEajln@^ur%J$MR>l_2L~J`#r9{Y4790W7jCmpo zF-YBH@ZCrTkZg?&z&06xaOcjQJ66Li9)e*k<6l3<)LDj4N||#0^$dRIKVc6%IUApp zdhf-5+IHX0dv_jq@~I~u-~YIVDJ^<*@6*m^E3GFh({eI15Uxr~Nk~hdQ(QcI-jX?U z=FFd8vU%gijZ5du%|+!(LKeSlcg@Sl%%Vd3#vEocMIS&XF>U2A7cN||V0#I%LA$@V zd*}Vw-+wPcg!kUJdE+vynKW}27BAd-&%O6-ynEyJ@9(+KBDI-FGYL?+P3x&mA5WCv z`uci6*4h=F29qiYCh%*kVazk+x;%-r5jHs4*rsp_BvYgUbjs64#?zh()AO^OO?z6; zdVYK9Y~|T=XD^>Vefli)qb{90g_YR_EY9G2oH};}Yyp+0DtS(_GiNI+D=m_t$rP^u zoei~-40TGX>A6|Xrbgk^Sm718dGi(~*lH*@*49^5RaMv4pysu?2?w>c*J>KcM>lR^ zGRAiM_N`kM3DabXV}Q<>+DMoZUI}gc%|@7#3+){pgq*#lxxTf%x39jbjpUIB!Gi~r z(oV#L42BMiJgNspH{dXldiv|HjvxQ}>uCzS0qO<2N;yIo< zd7Q*OkqS2IY)`$+zfCh><+x;m-2_om15~geKEfUhcG;4y5jP$h4{1hGq zWgi@qsYD8vJPOm5^s~rc`#Q(1@G)%qCzMUErfm9eVbh5g>L-*&lIq%_2Wf`M^Ld732Lc;)Gk5O}0f;>td6)BI3 z2$vz;lAM&3n2?OfM_jyy&~oJ@#6?F%M#!RZ)`-T+Bcq~2i*lh6pIbD4)v8tVWf1F? z_{rn|!^oMXVC=BWsD~nulQn}d(P;8>kSzv94CunL($aIYRQMgTn}MNe=^4m;q-4db zLNaLrT>2QNZbA1TM-V76K_!n4mn(8}aU%M2TL+U$XQ$gn#mDq+*T)(^R|kF|N;oTViMcgy_S={e!^$!IuM< zJy=~D8ybiLb!U4E!t6jmkRF9dH?~lF#Jm$U6hF2jME$%?re3ufmVi)XGwx!E*hTDt zH8K{(uI?@ZL?}Q$Pgt)6E}j_c5`l5)OgK;^p~j$>6-sT;QwNyC5#U2J&S+3SXNw1y zQ%~X)cvPZ~6dp0CiIE?`f*RutaTi3W1S}48y1r3F+J{F5v`F4!BQg`AHpxf>tgvEm zYUoTZR;SI-Xf!IdMl%<2u7X*4h3a|p^JW&|chI3+x=5|osMQd0SiM?f!Rsx-ZA9YM zwVd-eLqrf_Zx__y$AaP->hLZA5_q^#df%?@ymq!2JZNMq54Fhxo@2(bG1J5XK22vD z!8mI~=e(C(35$A}vZ$9Si~2WM)Nf%?FHjcs8``3(9icI9A01+D=C!d}-VBzlL?T07p>7`PDzB|m@QzDKNL2w<* zL#!F47(mnK7gvuHe=xAU*(=tqfx+Iqb`=u6t5<^=eANo%Xjc^Dcj=iq897UqE?c^2 z;i46Di8H513U_YF0|tqQ%P= z&zm!E#fEjbDkI&ww}pxT=ZIsZw~J&T`#QTjJKB)qsB35<3-+q2TgcHgH`cYa#kI9| zVNFf8er)#4ur(Tz=kClRJK!jBsBj%;E^&Rwe6r5@&yE<`O(Y}M$WDMKgY^S9AmB74 zdm|QMthl@JEa^ItEBOdyeG)>@=*hBN=$$gStBDOBZt25RT8%6jnI^!HrX4mgJ^e(I z3TPaO5c332kL2MoV%vz9IiO8(6M@c51g#ZB&I#t+(~X4WfYt>}(ZkCZ6REpY=n_Oy zb1rCDXp12pY81$4S!0OL`fd!n5g+6XuZKMy$w;1s#iNj2%CO>f?2`=Z^$H8!pwG^* z=K(J|W$bnL%)3<3KU~7yvS| z$D8>cusL*R0_aSiD(R9C8xfn3mYWt4>KhuNNK~XJE0fc63v(x=UXb3HBK5Lx;T9xu zwk*udTmZ*=0TLs|{e%QeUaskEs2xc^lRvVk|l*$ zJ_YCJ&o9i(ESz6bLOlDmTOWH2Vlp|)m+$tqbmkYp`+l4GkU5UmhdBBm~p%I^J)R(dKUK%%n+O2PBsI9I>(x?$o z_nMm9H*Z>1qKQO73&Gt|??zP`<2#d{M%^E(+-%C@?Ty=Qr;Ol}@4&E+M zBLd9?AsghMA#Gzk_DwT)zTta=6t<_UlYR$$1yC*HJHuFUuYp=b&Qb`IMsob{sgZJr z*Dna*=^+CGu?!8QTxu^T2>xdUfk;_~vNB|=f?yFnJYggO6(ZKr14>hVNOs`TYzX8` zxpBB}q_0`OWya4-Q_VbYINqoSLdw&4)gPFfo#H-|DeWK7e#H~c8KVRy18{p+bp zI8y&;e`#-sB3%(87#8`8hU=Ws#*yjuRh5-hp`jyfZ6n6_NwpkD-fyA`k5!eJ4x~|f zqzsQz7O6~1N>XN|Aoh@wkyjL6RFwCxxV(!Oui0?VjvYJh*|27Dc6Q;MMJraUSTv^) z5X;HqaX*)Gb49!c54?8=BzW-=fUQNuX94Yy73_&rn`dw|mKo6nSwN&@6)adEzJC3J z={vX53FmeR!U;#1-!gA9?=t`7U+?1hx6Bb?Ny)=c%tb`u75;Tl^2EcyshWKx!$;%Z zu7$Iko5N2KRzTSf21mAasCFZy>1u0R+u9&*SX)gP7F-av>p;7sf4AiRhr6%?SLECg90XbM44$R+?h^7CWI zjvxDyeg_KC7n(x+y9pIO10E+!K1dizC;cBOX&H>x> zL4`Fx)nGvjPu4iSupHt;VjD>G$kUaTI8FN9%wRh04bsZ#lF7IN?@k!?|NMCUzXl8a zzw4=B`)6IgWBtDc8Wx<-ffo9IFL#sHzMRnin_5#(vzLewGa(#yZj|TgGI?$Ao3(`c zs#Kt0(#ft85!i|{LSt7d=mnQt1%LJL^|7P)r(HnQ+F&oC+Z<<(vfZYLaU~6eft(Aw zGa%>Un|_Dv8o|wFZ1tN_zEvqmR7|b@4Sw}MsafxD)U5X!uJkCb^aErc~9}xwJZMa;nj90~Yc=?A~;BTzKZ|sO}sF4LHTVq#G2U)ydAu?k(8`=kZdqKx+ zPi(^kwFv@b+d9^U$I)oDApn_1h5^nR3~_;AU$2BXmBIp7V+~egM`S~C;K?T+-}j?^ z#emTqW-45tEGgNx?FoDc2o0b$>L(xFb8pGN0GMGQvXKo(3yPx2X<6ABNr{QcX~{{+ zN%5+=#j|NTciR>IA-1(O)LZYlXVYEl)^C5{{t~r%wr0~7AY->|xo7>dIcf_ej5Qz( zG#IT*YB0JAK&EuM0d1LDuN&^`#G`F(?Xm#8ID>bQPKs!}C;{{ynvQzH%kwV+TyCI) zVIv6NYZoqExpMi;r3)mKdGXTadOI2!6IhlI+Zq`@2(688^V?;OCw zD`QmSJ_0O)h$^<)+tsxs09MyJ%5;D!HxZe|205OaRn@nzUcG+n){U#E_PAMBZvjHFhCvCjqkh4MSH|BEw;^-~ z0YFEFh6GpuPORZgh&HQLz=<&e@;g||KT_86Ey`NH2y6LESj*QaYx&>Px0bd`{jCUI z6gp)kr%~}u zX7+CS(2ex-Mt~kMYn9)gI&_wp+>t%tnZ~|sw*Jw?FR9Hh)SdpeE9Jf>a-rQJOz$ctTPaJ`L z`Z;Bv-lXi)9>g#X!9KlA*{7dS_Q@K0qL$3rI$bqVC+(e>XWBq>1EsASw`!ZaM-Wr8 z07?jrNC`hWK+20%Fl!fXD%IY3wpadnQVG#5&7W)>E2sxSRb-IYC7`Y-k zJUlEMxvcOYf9OZVTSGsH;hOUBhfquS!(;pR|7huF91ar*^ zo_ylK9N-jQLagDCaL0~aI~Sn3rJVm|1rN@y2s^O%{v9@>349H7er-K>EF#Ha}JhM*U%z@ajs0}!Q~+`=QHqd-d#84($&kVo3ML;Q-J zcrWi#*5O^sI=l$$@L#YFf26Df?Y)#nPev+htm<+!R>UEF+}KTuTDwq;I6B;4Rnyph z=ShECCWFrC)5ngp`%*-D5OP9k8x)_&vn0j9y5Rs+UKyjB(^3lenaJetfBf-%kL-N} zi#$|J#6ON2nXQlEv&XR*{Nb*9w%E2NjsluK2vZ@BCq+#WNe)QeQL~3KbUf@}V;Ixl zipcmPz$w;S6B+lJh-1RkJ^JuNKX{6qaC!XW8#Zj(_~<^EzkU1m|6tda4K@u+M!JnK zr5!7iW<5eV*o##~e=n}Cy1K#4Z}xU7djaAjB;;s4-+hPe zY54Z;H?}vK@Mdp!^X-wKqp`gQqZwvT$z;C!KPdbB0PJ&Fw3vC0vd?8D6ZvjNA*V7> znCMAt9$<#?gtBo@Ts+JW698GHxof-5elGCts+mk~$I!kTpWGf#AWfvSPZfvzQdTI(gC8ltp>sY9AB4r(8k+M!N*ievBxUp~|MQsILx>$pBk!JC_?c2An ziwQ=r430^fIdf)`4R1@JCd5wxmYL@V9@sx0&eRbAK*{R}Q!d*7faQmw`ya4r4i$28 z^+@>=iYQz0`O=sPH_MoCHYT6VOrFWhDi5)la867x-ROz?ZKuWfsi|gT%-@(XHA^xl z*iAB<1^u}Y3-Bg988|^0^eUhrNs1ZOtw8-)bFg^-N@mT!N=rk$d z#(4cXHC|6q#G>AzoW)0g->CUlc@1JHDhc!a1$rJuc>)rp-*?MBHc&eOm^5O zbhvGp{2d?C3}$o(o8`z(a{!`Dl@~2?)5~K0T@)X3SFO&r;7;7tAz~ z=9Gm__)nQdn~Jj3o7I!UKGH#^7u*k`{SQ9);Qo0S!Y?8NOI|PfZ(KQN&YYDSx9{D% zcl*P;z;v_g;R6Isf|u8Ug+&<|8AS_MZ`-zQwQUA1w+Sa{-@b)#kB$I}@+SX!6~`5V zeO5mX*=N&80P#S2=rmHhrK#3kCSxMknA9~h9~K_d!4R8?+^kHT44&!uQ|D(2(+{?7 zScc6Mt}$(EOyN3}ybW=XwzcCg*`lSPoF({50Ma#^IbxAiH$FNJ9*$h*w+hBROQ~Y zzLCtsBekGl!ZV7p@QgCm>+V}e8AwZ!)y!A`c49L%KwN8V_(HZ^p8s_D5gih+UNPO#`T zwRZLn*fbwpu9-VR;zCOnFI~EHF$n6gSqlX5aUjIUDBjIrQyd6k{Bx+audF8d1}0rQR5{ZLvLcU>#3BgYFn$~kJrS9VTBwPp9?05 zT&p-UQA~`VZQsLv!uKdC*-Q8Uf5QBZfBl5vLigH6kHH~!+Qlf1x9(gZs);HIv$1OF zR`?m+3bRq0l8oNryhBl%WYd*EU%qhZl2cBEpV5i1g8H)KK8*3?`Vc%G92_xs8JzbR z6yR)Vs6qO=rlFYYGjjgIqxA}%cm@CPptPudd@Km}0D;wNr4<0n4I z;++OZ;;B=o&z!M4?x*?$5^CH#6EUH6S}(3+A28Qxy_w2-Gi>+2MW^-R{cJ2+qjXv` zyV)}gyLCdR^)-fJUZ-r@>(sTq44X!x*>o=czbKn#E!PD$+Mb?3J*qc5p>^L3O4P>2 zYlJxCCILQlAavYdp7V02s)NCYt)RUEW6o>z#*JII+M3%tS`g;M#;|3v-T2FILT-t?iT(rKuC%%U5520V>n4zc~8dU*3M_y`vxf^W*nE{NSxO{&3XHNRB%+u>z1u84NwZ z-&9u-&eP_8WQn?lM#jvnC1;s1%gV@_nU|f9s8-&L83jdZ;2&lb78Ky9U`Byv-hw$r z`E=sUlQtL(N{wci`#Pjbx4N~hv$L+QXK)mrEf|G|NX}|R+t=CBLPWS*n;U9u*bOVG zG^F{pwV`7^9G<6 zbf|7N?x4}*`X5-QPbus4DP^7BWhBfeuugO}0j-c!>agk-MRk6DxlwTVy}`cbid+G5 z@gV8%8^dXPd5MEi+I{DVx0%xBW{?yN437-+U)()+?wmQa zg&RK>^5)KA$!y<1cUyCFJ0ZVquB*OzHh{Q2|eEnEsp=~XM2EnRol#;t^5L{Nq$3_$1nA$}B!(ODd1 z@TzZDH`SxKoUaW)kOu6;jie8@0k+@L(c9l0*4l8#6|ys5`}5oHyz|Bz?|=9|$G-aN zt7Bh%{P8EBeDaTvj=uA!KfU|j2S@+>$G2X;^Wt^m_e@_8h{fTG@j*~R+4Y#tH1iyuYdj0Pk!+qufF=5-~8s)-~5hjZ~WJ9e(}?v z{u-bB=YRb6RhtHscTN*+JEu6$kAtldS!?2$0Z%r9lr`N<2T|*f2c>(K$cc zK5N|D@4Wl&dw=}H`$zxw(T5*?`1g-KAlrvW-+%Y*x8HmJ=+XDyedlc(26ZCNpriIyMEdB!P!1x>e09yq5|(Ny#fdZvgTF zd!j5)eCY3@WsRxj`^Q^0M!2e>NKRVp%9kX1ZxhG{doJ*J=(@rV=5gI;_+^{rb~HT89uF9WcB;o{}V7+5mx z?ebZ|R)kPHtE#S_KXt0H@n%h3M@!R0NGv&tZ*;P8(~lD$Acba38TMkr)ds-(2cto;1!^hCtf65^GSA;IAh^7tg$ z4V^RrLg2UHhEAzhC2nYFXqYT498^W{8D-FNiipNDlt)J(x@wiL#ESFj3NA$-aF)Bf z;;y=&v=s0ch6N`J?Q%|foI;?utY#V0Q&Q40$Q+%Lnv#@~lAM&1o|!pgMovbuO*?7D z(d_LT8r6ZXTRYGP$vCr}m*^^I-aw0k+}T?#GSOHzJQxf8nVwDN$IoYUC zOpRA66SGp1l2dKm8Qv280rubzlu!8w${rAIthZnf-lXioZz+3#!m{y!k2Meu%_~&x z7=|3%K|L8NXF`Ew1CC0o_4f4aAAr-@SsjxKPM1=zT*erq>tOz7W<##LbqXG!#Bg6%hJfWrkHVprh~Kgu1_FvrMEW<7AIzeVn|{!jR=FCOkW>=SXPbFmM=t&Zdl zIlk)gI%=C&-N-Q~a3Q8XwFOuG6@J7`eHpuUjv2#F$T1Pv4RfUA`nze9bX-%PB5l5b zA1B-VGk!vw-q@i{A$Ai_m%h*czfVmvLH#@W)c-5@n%GDBT3x5uWRX3q;mU!{v4Xh| zofwu-Lq;q*Z3TYN7#_sF>tF?h1DO~c`f-dLJF9(pYMXW~7252_7m+rf8E^9%KA32e zWB!UC(X2mqXf~X($}V?mmEAd}17DZQF?+E4AsWAq{qJ#|Kf->5W8AR|C-$iV!iTV< z-@)vIHpz^KHdkXu+WZ)Ms!j4E+Kk5zZQ>00yGtyxE&s!zMGnC2HNgC$8jalHquim{ zP(Z_TWtZSn!vg*`2f_%qbaBiduvg$lr(y4pI~~Ctnm7Yj>P}B|`v>WYduDNydnpWG} zS67dPJt&D9bR)eTo!vdX^$ z2em|3hQuRL{@^MVg0cw3og(POLgfciKYD{!J6Mi7&vFv#CIcCYfB0BufGXw~(ZZBK z>b||1lp(xq#LpdP1EKUv|BWjMX#UK1*Qh|ca z_>K!Huka-Q0k>C=>J%13RcH_}f-)Y5&I$|_MjJsmHaAjzs)XuO+t8;rqfc$6`qW0M zPo)JU5T!RCZ*X~gF$3+5P0bAf{_cjM;lBFY^>tNXQfU?X`}=x(^95gwg5y+T(a2!m z5F=s{oF8breZ86y1*%fxV?sirqrDN3xDF|ruTPvjoMI5O=m5iGLa}#b`m9A8x9{4K zo{^O^v#209BMs{2d3kbIMu=yRK#zzm=TxjG0?f*!*5Y^T79zd;c{ui+Ykh>V2>dJE zEeJx^+`e-D>eU;!YXKkvJhY9ZThG4p(mcpP{?PP#TJY1~LyB%UcbN2&GO2E8gn=ZS zo0t>n!HljibJL+45BBy94MTJjQ7UUlyPmEK_foY1q3UYAdX{4N3jYQ;;Tg{%7&oi;3$WR9U##-cO9fyp>_+gZ6SLwEh(6Y zzDg1MA*7K8ZJ&0G3>kE1#>L0O9plbRhF~kAqe;rh7%T(Jc^Xb+bIFFjZx|gOW2GJv ziKoA(i(m|64B!*pm_!UI$+Ut9@(nKN;RcbbE6xfsZW!RMQeb3I-3sgBt1Ku47kg1r zR$?lEl7~cmVyMj9c;16U3>ev6q!OI>m;v2gBt<IZ>dSM{m*=7{ z&!hVCT&gcC0-_^HFZK8F)I%X&6wpywiT>N;>F@9D?r!YA0UYNp5@NsE%{)=&148<3%v; zVlSD(*f(d+JS>p#GKGjchgOGsDBZ?QJLi{MK7<{rUC) zzJx{KACFHY(3g1;%fuRs{)PCC3I)0g*dMgH>wi9VRAe3|Tq&&*iQH z!sviaKUU_A(-aPLUb+x|RK+LQ=)1f8iP(Rq!#nkiX zL2MyxpB~>aejeyd=)|U;Ax6&-P(4FH^$dc86q6U#GsINS;9$27k`1oUZtft5@r1Wb z^0tsO#nhzH4C7KFL@Nj|VRI>=YA^8pqy;;*7fAnlqLm8Rdi=wsWar7aGFQN4dIo6F~J1(&w zGpwkC?Z?bk&kh>f`*+{NPjKIEP}lQM>U!SB9efwJ=2Ok&8vkSJ8L=ayoEkHrUZ58W zLF5P|Cl6e@27$VZjV%y*?&|4dVXd)=(M7CITrztzmvagPE+o7@92UwtKhde`K$DdMMT2BC^J0)X$nOGg7G4eI4LeZ!D3zvw?8oockkZ4Yc-G$ zkU;^#2zecW7VbfOQik$2@_H6O^PjL!JFlFq% zM>P!QaA#-Q!sN`f)ayrI=8itVEZdtwxkoneC$?Mo5Rs0Y2&eP}UU1se zQ1ewQM3C_E<*N{sym{l) z6Og7ndgkoe3qZ}E{Py^%GZ!x%|K>D)2j$8eSI?XQGb@ClYHH3-$CFW?{pRZvC%yr~ zqLP=xymboxo<{_(VGLd{TLz!+AZ$X?aSo!`6O9 z+1lfjtvv!;`zzSmHz-^CI%R9sVh9-fczC*cx_Wt$MU;+LIU0d{R#jC`|ER$*qSJeT za2cBqmVg$Hm7g`wYP$B-t|OM=29UHTq=>}=p(r>A;EZ6bLjC+u=_06*}POU3SR z#z6w?>FVb0jNc}F;DHDBtcSIH-efPIf#B40u$#n!8rA1tz|Y1{INsh?NFT$0+PV9I zT@TD*$VcT&nc!(+QY+ZUAJZ@g?fQZlVz9k2@Z=PnAz~$Okn=yp)wC# zpTQOP{PyiCPcWJ|<2ni-dg%M#Uyn<821V1x*AZxD9f4Rn(aIvPpO`L>T;_8)V@~?W zLk~T)YtKXXKeQNEdI%pM!o@s|zt2N(>m}wnyZ&f~G6re(*w|=!bW{Y+KQK5HKx!}% z11{nz3kifp4Ugd!TiMkI&~Iy z3e?L)o3-*R?BL}~IH;`r`YbQk`prpLEo`SwojhsbUi(?|uT#k?wDo#Dtp7RS>bqe4 zn;L7ITf2K|K|b0~a0S|aOb7sWw6u(kwK?#|Go~pv=#2Y5T{}mX9d_J(qpw;4`}Qnl z-#(=5+iuvm$6?V|2sV`Ej1+_4oFfm4_};-lB86Cc1~F)MT|%Va0~LW)(U=>FJHcF_xHcI zXV0ETAKbHhH_X#R58`0^jt6#c!tWL>S-yDr_8mKS+`H}G-CH&>yKo{FMLsG(0#j2G zRmx~p9C#h_3yMjpMIqFlR;`*db5=@HLVR>0eC)e!a-D`a=y=XvspT;Ds)pPBbf zuMeOB@&WT6Sf`Dj9A*B3-~Ji@<}Xlw{5@zGer00Ve*s486_~46m_MRw`7ikUCi6S| zeTVs&`5W_BoHt*`16Ew)n7LNdqZ>vvY;0_31cf@lTy=Eypwpw{6GT&QcL(B8{loeS zFG^=AfZ#g*8)Nbhay{ z^Cs|+K=h_8p3hgwtX{s9NQ|ynIDh`)g^P+cSy)J`u&ha)J8$7UO_65t+LeoNk`B<2 z4rS%M&1L0?t+0lLv?m{Tgo7qV2NA^}Tm6+2pCg2L{L|0AywuRq+}b%T5cQ5}hqS|5 zJ;tmSlM&)&h>H=C%(8&~VI&o_xYZg-P3cUa;^b%!-enDBGXJLh&gBAK2Wrbd*tPs;!p+=Ixf}h zR<2sLY|(;+>$hxLosp51xoidemlZ2kEmY@ZOe07{q+YO*FvXQ?IHIuYDzZRtd& zVrW_c8$aHw2tdiKUtmyxmzNI`lgLhc`-RFZf-}})Gj4QRN@n~r)4Mr!x3hs5qt~(* z_F_L}FZNURVkhjygRmC|D0{Kb++O5awHMB$vTT|NyOEWM=3~c>efh-~5L<0-LA7>G zEi_|mZ(i%~?dfzTiXxl8V8Ptkn%Rq2uUL?XVvBkBdBNhv3)I=kiFTtQ5dm1cf}Pp} znJ`}v8G2x%@Nkz(z=06vOyonheaDV%TQ+Up^YBAE=gnI%f7^XKcI>$Cz8#y_EShIG zfI%_%dlKamqPPI%5@+HR^cb$NAD3W66@U$hz(%a+QVm)VijzrSZ?K3zSPMT`4p#fQ zxgt3nBb22OQz4ftqvc9amdj(~B4bo>7I6h@VFelHX@2wY^da>BJ_O|9?&cj39vIwhBLffh@B6-j1tfk-&0;*`;# z_f`;_9-Nt;mQ2?5$yjdBNY5%LRxg-Wm>TV67-Q^Av1q_z37<;38W*TaNJ&Kzno^aZ zibW+%bWy>q9I{?dwxr=$wtV^G`E%#3*?9K~WT(;=FGaLq>C)x%3Nlm6IbX}Q_JrJz z2POAowygdIrQK7(`C2TasS)8pMg(p?84+a3?1(C!%va@HfW`WFfS@Y^;ZkGM_6=xJ zS<^o>($haY!a#=I8=mR#h@KBF@i}o$#=GZuYq6BT!Btx&Szu^by&9!>i!`~JXxq`6(zsLuLq~5LXwSiW-o;Y_f%@Fm z^6?eZ@BlQ-P{GY|uw1mmbna+vNE4ciIOEXa*MYeNQ(;{{(Lh2v)``m<1l8D)A`fn^x*sdywEQj+71 zBaNU|Mbt>6nZCzsMreG93pLU>rW17`S5&*<}n{vWMNmFt2C~_u`(h17idS zqmi?H46BO4F>jCm<@Wse_9FTAmYLcs=GzP8+biPRD{`hia&?ZbFL02($gtrB>}H1D z`7mK`JN7d4AK5W6D+a2_pKS#a#uLZ<)rm0%Y&|h!TlSuqFL^Net6k%)}lxhMW`1 z9MZ63ImYWdYLir~pv`-+Bef-!*poI%vD;*uh4=|=#+ll*he9K^%)#@79r0tduvp4O z78=^UbJ?}Twp?Xi$7eT2h!s2P&59UyCa35J$E!)7b>4`uG zvVys63B%UDP6kES2(E(t*c*146;0ejdzQ?Z)EGU^oM;4S!q9gOrM+&3GOp#_1*_TGmt`UeN85mHS0V5`Pr&GO3}B67u>fHK)F}v9zit#ZFr;8&s2iwhz}(%WWinEZ0e_7( zR!^8J2J{9jn+)Zy2)pZ03^Ae;aK1>;F?yX40eI9Y7|@ik-1xuo6H%a{Hu969yh4b% zT|f#HDo}dBu%=4e`FO6gsOLJHdai5HV;5kKpHDs41=Mqu1Dw_~%t(O(@suKspznri z{Q%>wL}(%@gl)f4$>=#D#F=zuBJCjfZOVK{M+IHLYn{2)C6FNbm>DL-1I7j8F_GI% z?lPV>?vA^7q_2NO;*pV|^69>Q_IkIEsti}kxf={Vv1w_sT{q61yAc?`@HdOxW`N9% z|CJR4gopVU273GTzM%^h9Vd>S=uj-&=!NPGZ`=rjp=ia5qPoxDdFS&wrr7WpUQcK%Zudi=~fL3EG7O1^lo%J>KT5WfGcXt!|eRX4JzgEj!#bvnrxT6=w zCF!)IWximY^zlYk)!Rp}BamxUh{&S>w~+;qFuALzUqE1Z^w=2d9uN@+zc(%-zytLn z@tlyANQGr0cQ2H=l=3Uc3TB!&NE0y~A#y2{S>! zIWr;DeYls&#<#e6NXlINf>=Jtz`bq%RSKL~AhVW8UmR-BM)$FX-A(FaX(UOeVwdS#IdL$LHUh=6B!uD z@^XYoshrhnQDlP%3_4AP07HTkqGCtKe^!pf6>6|yK@8>W*qG_+oS7j6)YX~e%TJJr zfCrQplcP@ZrsoLa94#GWN?Fv*%W(hP#n4ceNMNQ!B3(HQ0?tV&(&@xF3-WJ>rvs2Z K%BG%SnEwTNN89xP literal 0 HcmV?d00001 diff --git a/vendor/cosmic-text/fonts/NotoSansHebrew.ttf b/vendor/cosmic-text/fonts/NotoSansHebrew.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7ea039e022fb0ca8cbb085351172ed6f54d9684c GIT binary patch literal 183688 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%0D`E~=(I6_q$TZn@p!hs1@yO|>2E>P-xQk#b%*G0 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 HOHuv_{$t^e literal 0 HcmV?d00001 diff --git a/vendor/cosmic-text/src/attrs.rs b/vendor/cosmic-text/src/attrs.rs new file mode 100644 index 0000000..20c697a --- /dev/null +++ b/vendor/cosmic-text/src/attrs.rs @@ -0,0 +1,694 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +#[cfg(not(feature = "std"))] +use alloc::vec::Vec; +use core::hash::{Hash, Hasher}; +use core::ops::Range; +use rangemap::RangeMap; +use smol_str::SmolStr; + +use crate::{CacheKeyFlags, Metrics}; + +pub use fontdb::{Family, Stretch, Style, Weight}; + +/// Text color +#[derive(Clone, Copy, Debug, PartialOrd, Ord, Eq, Hash, PartialEq)] +pub struct Color(pub u32); + +impl Color { + /// Create new color with red, green, and blue components + #[inline] + pub const fn rgb(r: u8, g: u8, b: u8) -> Self { + Self::rgba(r, g, b, 0xFF) + } + + /// Create new color with red, green, blue, and alpha components + #[inline] + pub const fn rgba(r: u8, g: u8, b: u8, a: u8) -> Self { + Self(((a as u32) << 24) | ((r as u32) << 16) | ((g as u32) << 8) | (b as u32)) + } + + /// Get a tuple over all of the attributes, in `(r, g, b, a)` order. + #[inline] + pub fn as_rgba_tuple(self) -> (u8, u8, u8, u8) { + (self.r(), self.g(), self.b(), self.a()) + } + + /// Get an array over all of the components, in `[r, g, b, a]` order. + #[inline] + pub fn as_rgba(self) -> [u8; 4] { + [self.r(), self.g(), self.b(), self.a()] + } + + /// Get the red component + #[inline] + pub fn r(&self) -> u8 { + ((self.0 & 0x00_FF_00_00) >> 16) as u8 + } + + /// Get the green component + #[inline] + pub fn g(&self) -> u8 { + ((self.0 & 0x00_00_FF_00) >> 8) as u8 + } + + /// Get the blue component + #[inline] + pub fn b(&self) -> u8 { + (self.0 & 0x00_00_00_FF) as u8 + } + + /// Get the alpha component + #[inline] + pub fn a(&self) -> u8 { + ((self.0 & 0xFF_00_00_00) >> 24) as u8 + } +} + +/// An owned version of [`Family`] +#[derive(Clone, Debug, Eq, Hash, PartialEq)] +pub enum FamilyOwned { + Name(SmolStr), + Serif, + SansSerif, + Cursive, + Fantasy, + Monospace, +} + +impl FamilyOwned { + pub fn new(family: Family) -> Self { + match family { + Family::Name(name) => FamilyOwned::Name(SmolStr::from(name)), + Family::Serif => FamilyOwned::Serif, + Family::SansSerif => FamilyOwned::SansSerif, + Family::Cursive => FamilyOwned::Cursive, + Family::Fantasy => FamilyOwned::Fantasy, + Family::Monospace => FamilyOwned::Monospace, + } + } + + pub fn as_family(&self) -> Family { + match self { + FamilyOwned::Name(name) => Family::Name(name), + FamilyOwned::Serif => Family::Serif, + FamilyOwned::SansSerif => Family::SansSerif, + FamilyOwned::Cursive => Family::Cursive, + FamilyOwned::Fantasy => Family::Fantasy, + FamilyOwned::Monospace => Family::Monospace, + } + } +} + +/// Metrics, but implementing Eq and Hash using u32 representation of f32 +//TODO: what are the edge cases of this? +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] +pub struct CacheMetrics { + font_size_bits: u32, + line_height_bits: u32, +} + +impl From for CacheMetrics { + fn from(metrics: Metrics) -> Self { + Self { + font_size_bits: metrics.font_size.to_bits(), + line_height_bits: metrics.line_height.to_bits(), + } + } +} + +impl From for Metrics { + fn from(metrics: CacheMetrics) -> Self { + Self { + font_size: f32::from_bits(metrics.font_size_bits), + line_height: f32::from_bits(metrics.line_height_bits), + } + } +} +/// A 4-byte `OpenType` feature tag identifier +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] +pub struct FeatureTag([u8; 4]); + +impl FeatureTag { + pub const fn new(tag: &[u8; 4]) -> Self { + Self(*tag) + } + + /// Kerning adjusts spacing between specific character pairs + pub const KERNING: Self = Self::new(b"kern"); + /// Standard ligatures (fi, fl, etc.) + pub const STANDARD_LIGATURES: Self = Self::new(b"liga"); + /// Contextual ligatures (context-dependent ligatures) + pub const CONTEXTUAL_LIGATURES: Self = Self::new(b"clig"); + /// Contextual alternates (glyph substitutions based on context) + pub const CONTEXTUAL_ALTERNATES: Self = Self::new(b"calt"); + /// Discretionary ligatures (optional stylistic ligatures) + pub const DISCRETIONARY_LIGATURES: Self = Self::new(b"dlig"); + /// Small caps (lowercase to small capitals) + pub const SMALL_CAPS: Self = Self::new(b"smcp"); + /// All small caps (uppercase and lowercase to small capitals) + pub const ALL_SMALL_CAPS: Self = Self::new(b"c2sc"); + /// Stylistic Set 1 (font-specific alternate glyphs) + pub const STYLISTIC_SET_1: Self = Self::new(b"ss01"); + /// Stylistic Set 2 (font-specific alternate glyphs) + pub const STYLISTIC_SET_2: Self = Self::new(b"ss02"); + + pub fn as_bytes(&self) -> &[u8; 4] { + &self.0 + } +} + +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] +pub struct Feature { + pub tag: FeatureTag, + pub value: u32, +} + +#[derive(Clone, Debug, Default, Eq, Hash, PartialEq)] +pub struct FontFeatures { + pub features: Vec, +} + +impl FontFeatures { + pub fn new() -> Self { + Self { + features: Vec::new(), + } + } + + pub fn set(&mut self, tag: FeatureTag, value: u32) -> &mut Self { + self.features.push(Feature { tag, value }); + self + } + + /// Enable a feature (set to 1) + pub fn enable(&mut self, tag: FeatureTag) -> &mut Self { + self.set(tag, 1) + } + + /// Disable a feature (set to 0) + pub fn disable(&mut self, tag: FeatureTag) -> &mut Self { + self.set(tag, 0) + } +} + +/// A 4-byte `OpenType` variation axis tag. +#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct VariationTag([u8; 4]); + +impl VariationTag { + /// Create a variation axis tag from its four-byte representation. + pub const fn new(tag: &[u8; 4]) -> Self { + Self(*tag) + } + + /// Return the four-byte representation of this axis tag. + pub const fn as_bytes(&self) -> &[u8; 4] { + &self.0 + } +} + +/// A variation coordinate with stable equality and hashing for shape caches. +#[derive(Clone, Copy, Debug)] +pub struct VariationValue(pub f32); + +impl PartialEq for VariationValue { + fn eq(&self, other: &Self) -> bool { + if self.0.is_nan() { + other.0.is_nan() + } else { + self.0 == other.0 + } + } +} + +impl Eq for VariationValue {} + +impl Hash for VariationValue { + fn hash(&self, hasher: &mut H) { + const CANONICAL_NAN_BITS: u32 = 0x7fc0_0000; + + let bits = if self.0.is_nan() { + CANONICAL_NAN_BITS + } else { + // Add +0.0 to canonicalize -0.0 to +0.0. + (self.0 + 0.0).to_bits() + }; + + bits.hash(hasher); + } +} + +/// One `OpenType` variation axis coordinate. +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] +pub struct FontVariation { + pub tag: VariationTag, + pub value: VariationValue, +} + +/// Variation coordinates applied while shaping a text span. +#[derive(Clone, Debug, Default, Eq, Hash, PartialEq)] +pub struct FontVariations { + variations: Vec, +} + +impl FontVariations { + pub fn new() -> Self { + Self { + variations: Vec::new(), + } + } + + /// Set an axis coordinate. Setting the same tag again replaces its value, + /// matching the last-value-wins behavior of CSS variation settings. + pub fn set(&mut self, tag: VariationTag, value: f32) -> &mut Self { + match self + .variations + .binary_search_by_key(&tag, |variation| variation.tag) + { + Ok(index) => self.variations[index].value = VariationValue(value), + Err(index) => self.variations.insert( + index, + FontVariation { + tag, + value: VariationValue(value), + }, + ), + } + self + } + + pub fn is_empty(&self) -> bool { + self.variations.is_empty() + } + + pub fn len(&self) -> usize { + self.variations.len() + } + + pub fn iter(&self) -> impl Iterator { + self.variations.iter() + } +} + +/// A wrapper for letter spacing to get around that f32 doesn't implement Eq and Hash +#[derive(Clone, Copy, Debug)] +pub struct LetterSpacing(pub f32); + +impl PartialEq for LetterSpacing { + fn eq(&self, other: &Self) -> bool { + if self.0.is_nan() { + other.0.is_nan() + } else { + self.0 == other.0 + } + } +} + +impl Eq for LetterSpacing {} + +impl Hash for LetterSpacing { + fn hash(&self, hasher: &mut H) { + const CANONICAL_NAN_BITS: u32 = 0x7fc0_0000; + + let bits = if self.0.is_nan() { + CANONICAL_NAN_BITS + } else { + // Add +0.0 to canonicalize -0.0 to +0.0 + (self.0 + 0.0).to_bits() + }; + + bits.hash(hasher); + } +} + +/// Text attributes +#[derive(Clone, Debug, Eq, Hash, PartialEq)] +pub struct Attrs<'a> { + //TODO: should this be an option? + pub color_opt: Option, + pub family: Family<'a>, + /// A specific database face selected by the caller. Font fallback remains + /// available when that face does not contain a requested glyph. + pub font_id_opt: Option, + pub stretch: Stretch, + pub style: Style, + pub weight: Weight, + pub metadata: usize, + pub cache_key_flags: CacheKeyFlags, + pub metrics_opt: Option, + /// Letter spacing (tracking) in EM + pub letter_spacing_opt: Option, + pub font_features: FontFeatures, + pub font_variations: FontVariations, +} + +impl<'a> Attrs<'a> { + /// Create a new set of attributes with sane defaults + /// + /// This defaults to a regular Sans-Serif font. + pub fn new() -> Self { + Self { + color_opt: None, + family: Family::SansSerif, + font_id_opt: None, + stretch: Stretch::Normal, + style: Style::Normal, + weight: Weight::NORMAL, + metadata: 0, + cache_key_flags: CacheKeyFlags::empty(), + metrics_opt: None, + letter_spacing_opt: None, + font_features: FontFeatures::new(), + font_variations: FontVariations::new(), + } + } + + /// Set [Color] + pub fn color(mut self, color: Color) -> Self { + self.color_opt = Some(color); + self + } + + /// Set [Family] + pub fn family(mut self, family: Family<'a>) -> Self { + self.family = family; + self + } + + /// Prefer one exact database face before ordinary family matching. + pub fn font_id(mut self, font_id: fontdb::ID) -> Self { + self.font_id_opt = Some(font_id); + self + } + + /// Set [Stretch] + pub fn stretch(mut self, stretch: Stretch) -> Self { + self.stretch = stretch; + self + } + + /// Set [Style] + pub fn style(mut self, style: Style) -> Self { + self.style = style; + self + } + + /// Set [Weight] + pub fn weight(mut self, weight: Weight) -> Self { + self.weight = weight; + self + } + + /// Set metadata + pub fn metadata(mut self, metadata: usize) -> Self { + self.metadata = metadata; + self + } + + /// Set [`CacheKeyFlags`] + pub fn cache_key_flags(mut self, cache_key_flags: CacheKeyFlags) -> Self { + self.cache_key_flags = cache_key_flags; + self + } + + /// Set [`Metrics`], overriding values in buffer + pub fn metrics(mut self, metrics: Metrics) -> Self { + self.metrics_opt = Some(metrics.into()); + self + } + + /// Set letter spacing (tracking) in EM + pub fn letter_spacing(mut self, letter_spacing: f32) -> Self { + self.letter_spacing_opt = Some(LetterSpacing(letter_spacing)); + self + } + + /// Set [`FontFeatures`] + pub fn font_features(mut self, font_features: FontFeatures) -> Self { + self.font_features = font_features; + self + } + + /// Set all variation coordinates used while shaping. + pub fn font_variations(mut self, font_variations: FontVariations) -> Self { + self.font_variations = font_variations; + self + } + + /// Set one variation coordinate used while shaping. + pub fn font_variation(mut self, tag: VariationTag, value: f32) -> Self { + self.font_variations.set(tag, value); + self + } + + /// Check if font matches + pub fn matches(&self, face: &fontdb::FaceInfo) -> bool { + //TODO: smarter way of including emoji + face.post_script_name.contains("Emoji") + || (face.style == self.style && face.stretch == self.stretch) + } + + /// Check if this set of attributes can be shaped with another + pub fn compatible(&self, other: &Self) -> bool { + self.family == other.family + && self.font_id_opt == other.font_id_opt + && self.stretch == other.stretch + && self.style == other.style + && self.weight == other.weight + && self.font_variations == other.font_variations + } +} + +/// Font-specific part of [`Attrs`] to be used for matching +#[derive(Clone, Debug, Eq, Hash, PartialEq)] +pub struct FontMatchAttrs { + family: FamilyOwned, + stretch: Stretch, + style: Style, + weight: Weight, +} + +impl<'a> From<&Attrs<'a>> for FontMatchAttrs { + fn from(attrs: &Attrs<'a>) -> Self { + Self { + family: FamilyOwned::new(attrs.family), + stretch: attrs.stretch, + style: attrs.style, + weight: attrs.weight, + } + } +} + +/// An owned version of [`Attrs`] +#[derive(Clone, Debug, Eq, Hash, PartialEq)] +pub struct AttrsOwned { + //TODO: should this be an option? + pub color_opt: Option, + pub family_owned: FamilyOwned, + pub font_id_opt: Option, + pub stretch: Stretch, + pub style: Style, + pub weight: Weight, + pub metadata: usize, + pub cache_key_flags: CacheKeyFlags, + pub metrics_opt: Option, + /// Letter spacing (tracking) in EM + pub letter_spacing_opt: Option, + pub font_features: FontFeatures, + pub font_variations: FontVariations, +} + +impl AttrsOwned { + pub fn new(attrs: &Attrs) -> Self { + Self { + color_opt: attrs.color_opt, + family_owned: FamilyOwned::new(attrs.family), + font_id_opt: attrs.font_id_opt, + stretch: attrs.stretch, + style: attrs.style, + weight: attrs.weight, + metadata: attrs.metadata, + cache_key_flags: attrs.cache_key_flags, + metrics_opt: attrs.metrics_opt, + letter_spacing_opt: attrs.letter_spacing_opt, + font_features: attrs.font_features.clone(), + font_variations: attrs.font_variations.clone(), + } + } + + pub fn as_attrs(&self) -> Attrs { + Attrs { + color_opt: self.color_opt, + family: self.family_owned.as_family(), + font_id_opt: self.font_id_opt, + stretch: self.stretch, + style: self.style, + weight: self.weight, + metadata: self.metadata, + cache_key_flags: self.cache_key_flags, + metrics_opt: self.metrics_opt, + letter_spacing_opt: self.letter_spacing_opt, + font_features: self.font_features.clone(), + font_variations: self.font_variations.clone(), + } + } +} + +/// List of text attributes to apply to a line +//TODO: have this clean up the spans when changes are made +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct AttrsList { + defaults: AttrsOwned, + pub(crate) spans: RangeMap, +} + +impl AttrsList { + /// Create a new attributes list with a set of default [Attrs] + pub fn new(defaults: &Attrs) -> Self { + Self { + defaults: AttrsOwned::new(defaults), + spans: RangeMap::new(), + } + } + + /// Get the default [Attrs] + pub fn defaults(&self) -> Attrs { + self.defaults.as_attrs() + } + + /// Get the current attribute spans + pub fn spans(&self) -> Vec<(&Range, &AttrsOwned)> { + self.spans_iter().collect() + } + + /// Get an iterator over the current attribute spans + pub fn spans_iter(&self) -> impl Iterator, &AttrsOwned)> + '_ { + self.spans.iter() + } + + /// Clear the current attribute spans + pub fn clear_spans(&mut self) { + self.spans.clear(); + } + + /// Add an attribute span, removes any previous matching parts of spans + pub fn add_span(&mut self, range: Range, attrs: &Attrs) { + //do not support 1..1 or 2..1 even if by accident. + if range.is_empty() { + return; + } + + self.spans.insert(range, AttrsOwned::new(attrs)); + } + + /// Get the attribute span for an index + /// + /// This returns a span that contains the index + pub fn get_span(&self, index: usize) -> Attrs { + self.spans + .get(&index) + .map(|v| v.as_attrs()) + .unwrap_or(self.defaults.as_attrs()) + } + + /// Split attributes list at an offset + #[allow(clippy::missing_panics_doc)] + pub fn split_off(&mut self, index: usize) -> Self { + let mut new = Self::new(&self.defaults.as_attrs()); + let mut removes = Vec::new(); + + //get the keys we need to remove or fix. + for span in self.spans.iter() { + if span.0.end <= index { + continue; + } else if span.0.start >= index { + removes.push((span.0.clone(), false)); + } else { + removes.push((span.0.clone(), true)); + } + } + + for (key, resize) in removes { + let (range, attrs) = self + .spans + .get_key_value(&key.start) + .map(|v| (v.0.clone(), v.1.clone())) + .expect("attrs span not found"); + self.spans.remove(key); + + if resize { + new.spans.insert(0..range.end - index, attrs.clone()); + self.spans.insert(range.start..index, attrs); + } else { + new.spans + .insert(range.start - index..range.end - index, attrs); + } + } + new + } + + /// Resets the attributes with new defaults. + pub(crate) fn reset(mut self, default: &Attrs) -> Self { + self.defaults = AttrsOwned::new(default); + self.spans.clear(); + self + } +} + +#[cfg(test)] +mod tests { + use super::{Attrs, AttrsOwned, FontVariations, VariationTag}; + use core::hash::{Hash, Hasher}; + use std::collections::hash_map::DefaultHasher; + + fn hash(value: impl Hash) -> u64 { + let mut hasher = DefaultHasher::new(); + value.hash(&mut hasher); + hasher.finish() + } + + #[test] + fn variation_coordinates_round_trip_and_change_shape_identity() { + let defaults = Attrs::new(); + let varied = Attrs::new() + .font_variation(VariationTag::new(b"opsz"), 32.0) + .font_variation(VariationTag::new(b"wght"), 500.0); + + assert!(!defaults.compatible(&varied)); + assert_ne!(AttrsOwned::new(&defaults), AttrsOwned::new(&varied)); + assert_ne!( + hash(AttrsOwned::new(&defaults)), + hash(AttrsOwned::new(&varied)) + ); + assert_eq!(AttrsOwned::new(&varied).as_attrs(), varied); + } + + #[test] + fn setting_an_axis_twice_replaces_its_coordinate() { + let mut variations = FontVariations::new(); + variations + .set(VariationTag::new(b"opsz"), 14.0) + .set(VariationTag::new(b"opsz"), 32.0); + + assert_eq!(variations.len(), 1); + assert_eq!( + variations.iter().next().map(|variation| variation.value.0), + Some(32.0) + ); + } + + #[test] + fn variation_order_does_not_change_shape_identity() { + let left = Attrs::new() + .font_variation(VariationTag::new(b"wght"), 500.0) + .font_variation(VariationTag::new(b"opsz"), 32.0); + let right = Attrs::new() + .font_variation(VariationTag::new(b"opsz"), 32.0) + .font_variation(VariationTag::new(b"wght"), 500.0); + + assert_eq!(left, right); + assert!(left.compatible(&right)); + assert_eq!(hash(AttrsOwned::new(&left)), hash(AttrsOwned::new(&right))); + } +} diff --git a/vendor/cosmic-text/src/bidi_para.rs b/vendor/cosmic-text/src/bidi_para.rs new file mode 100644 index 0000000..5a7e595 --- /dev/null +++ b/vendor/cosmic-text/src/bidi_para.rs @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +use unicode_bidi::{bidi_class, BidiClass, BidiInfo, ParagraphInfo}; + +/// An iterator over the paragraphs in the input text. +/// It is equivalent to [`core::str::Lines`] but follows `unicode-bidi` behaviour. +#[derive(Debug)] +pub struct BidiParagraphs<'text> { + text: &'text str, + info: alloc::vec::IntoIter, +} + +impl<'text> BidiParagraphs<'text> { + /// Create an iterator to split the input text into paragraphs + /// in accordance with `unicode-bidi` behaviour. + pub fn new(text: &'text str) -> Self { + let info = BidiInfo::new(text, None); + let info = info.paragraphs.into_iter(); + Self { text, info } + } +} + +impl<'text> Iterator for BidiParagraphs<'text> { + type Item = &'text str; + + fn next(&mut self) -> Option { + let para = self.info.next()?; + let paragraph = &self.text[para.range]; + // `para.range` includes the newline that splits the line, so remove it if present + let mut char_indices = paragraph.char_indices(); + if let Some(i) = char_indices.next_back().and_then(|(i, c)| { + // `BidiClass::B` is a Paragraph_Separator (various newline characters) + (bidi_class(c) == BidiClass::B).then_some(i) + }) { + Some(¶graph[0..i]) + } else { + Some(paragraph) + } + } +} diff --git a/vendor/cosmic-text/src/buffer.rs b/vendor/cosmic-text/src/buffer.rs new file mode 100644 index 0000000..0292e6b --- /dev/null +++ b/vendor/cosmic-text/src/buffer.rs @@ -0,0 +1,1485 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +#[cfg(not(feature = "std"))] +use alloc::{string::String, vec::Vec}; +use core::{cmp, fmt}; +use unicode_segmentation::UnicodeSegmentation; + +use crate::{ + Affinity, Align, Attrs, AttrsList, BidiParagraphs, BorrowedWithFontSystem, BufferLine, Color, + Cursor, FontSystem, LayoutCursor, LayoutGlyph, LayoutLine, LineEnding, LineIter, Motion, + Scroll, ShapeLine, Shaping, Wrap, +}; + +/// A line of visible text for rendering +#[derive(Debug)] +pub struct LayoutRun<'a> { + /// The index of the original text line + pub line_i: usize, + /// The original text line + pub text: &'a str, + /// True if the original paragraph direction is RTL + pub rtl: bool, + /// The array of layout glyphs to draw + pub glyphs: &'a [LayoutGlyph], + /// Y offset to baseline of line + pub line_y: f32, + /// Y offset to top of line + pub line_top: f32, + /// Y offset to next line + pub line_height: f32, + /// Width of line + pub line_w: f32, +} + +impl LayoutRun<'_> { + /// Return the pixel span `Some((x_left, x_width))` of the highlighted area between `cursor_start` + /// and `cursor_end` within this run, or None if the cursor range does not intersect this run. + /// This may return widths of zero if `cursor_start == cursor_end`, if the run is empty, or if the + /// region's left start boundary is the same as the cursor's end boundary or vice versa. + #[allow(clippy::missing_panics_doc)] + pub fn highlight(&self, cursor_start: Cursor, cursor_end: Cursor) -> Option<(f32, f32)> { + let mut x_start = None; + let mut x_end = None; + let rtl_factor = if self.rtl { 1. } else { 0. }; + let ltr_factor = 1. - rtl_factor; + for glyph in self.glyphs.iter() { + let cursor = self.cursor_from_glyph_left(glyph); + if cursor >= cursor_start && cursor <= cursor_end { + if x_start.is_none() { + x_start = Some(glyph.x + glyph.w * rtl_factor); + } + x_end = Some(glyph.x + glyph.w * rtl_factor); + } + let cursor = self.cursor_from_glyph_right(glyph); + if cursor >= cursor_start && cursor <= cursor_end { + if x_start.is_none() { + x_start = Some(glyph.x + glyph.w * ltr_factor); + } + x_end = Some(glyph.x + glyph.w * ltr_factor); + } + } + if let Some(x_start) = x_start { + let x_end = x_end.expect("end of cursor not found"); + let (x_start, x_end) = if x_start < x_end { + (x_start, x_end) + } else { + (x_end, x_start) + }; + Some((x_start, x_end - x_start)) + } else { + None + } + } + + fn cursor_from_glyph_left(&self, glyph: &LayoutGlyph) -> Cursor { + if self.rtl { + Cursor::new_with_affinity(self.line_i, glyph.end, Affinity::Before) + } else { + Cursor::new_with_affinity(self.line_i, glyph.start, Affinity::After) + } + } + + fn cursor_from_glyph_right(&self, glyph: &LayoutGlyph) -> Cursor { + if self.rtl { + Cursor::new_with_affinity(self.line_i, glyph.start, Affinity::After) + } else { + Cursor::new_with_affinity(self.line_i, glyph.end, Affinity::Before) + } + } +} + +/// An iterator of visible text lines, see [`LayoutRun`] +#[derive(Debug)] +pub struct LayoutRunIter<'b> { + buffer: &'b Buffer, + line_i: usize, + layout_i: usize, + total_height: f32, + line_top: f32, +} + +impl<'b> LayoutRunIter<'b> { + pub fn new(buffer: &'b Buffer) -> Self { + Self { + buffer, + line_i: buffer.scroll.line, + layout_i: 0, + total_height: 0.0, + line_top: 0.0, + } + } +} + +impl<'b> Iterator for LayoutRunIter<'b> { + type Item = LayoutRun<'b>; + + fn next(&mut self) -> Option { + while let Some(line) = self.buffer.lines.get(self.line_i) { + let shape = line.shape_opt()?; + let layout = line.layout_opt()?; + while let Some(layout_line) = layout.get(self.layout_i) { + self.layout_i += 1; + + let line_height = layout_line + .line_height_opt + .unwrap_or(self.buffer.metrics.line_height); + self.total_height += line_height; + + let line_top = self.line_top - self.buffer.scroll.vertical; + let glyph_height = layout_line.max_ascent + layout_line.max_descent; + let centering_offset = (line_height - glyph_height) / 2.0; + let line_y = line_top + centering_offset + layout_line.max_ascent; + if let Some(height) = self.buffer.height_opt { + if line_y > height { + return None; + } + } + self.line_top += line_height; + if line_y < 0.0 { + continue; + } + + return Some(LayoutRun { + line_i: self.line_i, + text: line.text(), + rtl: shape.rtl, + glyphs: &layout_line.glyphs, + line_y, + line_top, + line_height, + line_w: layout_line.w, + }); + } + self.line_i += 1; + self.layout_i = 0; + } + + None + } +} + +/// Metrics of text +#[derive(Clone, Copy, Debug, Default, PartialEq)] +pub struct Metrics { + /// Font size in pixels + pub font_size: f32, + /// Line height in pixels + pub line_height: f32, +} + +impl Metrics { + /// Create metrics with given font size and line height + pub const fn new(font_size: f32, line_height: f32) -> Self { + Self { + font_size, + line_height, + } + } + + /// Create metrics with given font size and calculate line height using relative scale + pub fn relative(font_size: f32, line_height_scale: f32) -> Self { + Self { + font_size, + line_height: font_size * line_height_scale, + } + } + + /// Scale font size and line height + pub fn scale(self, scale: f32) -> Self { + Self { + font_size: self.font_size * scale, + line_height: self.line_height * scale, + } + } +} + +impl fmt::Display for Metrics { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{}px / {}px", self.font_size, self.line_height) + } +} + +/// A buffer of text that is shaped and laid out +#[derive(Debug)] +pub struct Buffer { + /// [`BufferLine`]s (or paragraphs) of text in the buffer + pub lines: Vec, + metrics: Metrics, + width_opt: Option, + height_opt: Option, + scroll: Scroll, + /// True if a redraw is requires. Set to false after processing + redraw: bool, + wrap: Wrap, + monospace_width: Option, + tab_width: u16, +} + +impl Clone for Buffer { + fn clone(&self) -> Self { + Self { + lines: self.lines.clone(), + metrics: self.metrics, + width_opt: self.width_opt, + height_opt: self.height_opt, + scroll: self.scroll, + redraw: self.redraw, + wrap: self.wrap, + monospace_width: self.monospace_width, + tab_width: self.tab_width, + } + } +} + +impl Buffer { + /// Create an empty [`Buffer`] with the provided [`Metrics`]. + /// This is useful for initializing a [`Buffer`] without a [`FontSystem`]. + /// + /// You must populate the [`Buffer`] with at least one [`BufferLine`] before shaping and layout, + /// for example by calling [`Buffer::set_text`]. + /// + /// If you have a [`FontSystem`] in scope, you should use [`Buffer::new`] instead. + /// + /// # Panics + /// + /// Will panic if `metrics.line_height` is zero. + pub fn new_empty(metrics: Metrics) -> Self { + assert_ne!(metrics.line_height, 0.0, "line height cannot be 0"); + Self { + lines: Vec::new(), + metrics, + width_opt: None, + height_opt: None, + scroll: Scroll::default(), + redraw: false, + wrap: Wrap::WordOrGlyph, + monospace_width: None, + tab_width: 8, + } + } + + /// Create a new [`Buffer`] with the provided [`FontSystem`] and [`Metrics`] + /// + /// # Panics + /// + /// Will panic if `metrics.line_height` is zero. + pub fn new(font_system: &mut FontSystem, metrics: Metrics) -> Self { + let mut buffer = Self::new_empty(metrics); + buffer.set_text(font_system, "", &Attrs::new(), Shaping::Advanced); + buffer + } + + /// Mutably borrows the buffer together with an [`FontSystem`] for more convenient methods + pub fn borrow_with<'a>( + &'a mut self, + font_system: &'a mut FontSystem, + ) -> BorrowedWithFontSystem<'a, Buffer> { + BorrowedWithFontSystem { + inner: self, + font_system, + } + } + + fn relayout(&mut self, font_system: &mut FontSystem) { + #[cfg(all(feature = "std", not(target_arch = "wasm32")))] + let instant = std::time::Instant::now(); + + for line in &mut self.lines { + if line.shape_opt().is_some() { + line.reset_layout(); + line.layout( + font_system, + self.metrics.font_size, + self.width_opt, + self.wrap, + self.monospace_width, + self.tab_width, + ); + } + } + + self.redraw = true; + + #[cfg(all(feature = "std", not(target_arch = "wasm32")))] + log::debug!("relayout: {:?}", instant.elapsed()); + } + + /// Shape lines until cursor, also scrolling to include cursor in view + #[allow(clippy::missing_panics_doc)] + pub fn shape_until_cursor( + &mut self, + font_system: &mut FontSystem, + cursor: Cursor, + prune: bool, + ) { + let metrics = self.metrics; + let old_scroll = self.scroll; + + let layout_cursor = self + .layout_cursor(font_system, cursor) + .expect("shape_until_cursor invalid cursor"); + + let mut layout_y = 0.0; + let mut total_height = { + let layout = self + .line_layout(font_system, layout_cursor.line) + .expect("shape_until_cursor failed to scroll forwards"); + (0..layout_cursor.layout).for_each(|layout_i| { + layout_y += layout[layout_i] + .line_height_opt + .unwrap_or(metrics.line_height); + }); + layout_y + + layout[layout_cursor.layout] + .line_height_opt + .unwrap_or(metrics.line_height) + }; + + if self.scroll.line > layout_cursor.line + || (self.scroll.line == layout_cursor.line && self.scroll.vertical > layout_y) + { + // Adjust scroll backwards if cursor is before it + self.scroll.line = layout_cursor.line; + self.scroll.vertical = layout_y; + } else if let Some(height) = self.height_opt { + // Adjust scroll forwards if cursor is after it + let mut line_i = layout_cursor.line; + if line_i <= self.scroll.line { + // This is a single line that may wrap + if total_height > height + self.scroll.vertical { + self.scroll.vertical = total_height - height; + } + } else { + while line_i > self.scroll.line { + line_i -= 1; + let layout = self + .line_layout(font_system, line_i) + .expect("shape_until_cursor failed to scroll forwards"); + for layout_line in layout.iter() { + total_height += layout_line.line_height_opt.unwrap_or(metrics.line_height); + } + if total_height > height + self.scroll.vertical { + self.scroll.line = line_i; + self.scroll.vertical = total_height - height; + } + } + } + } + + if old_scroll != self.scroll { + self.redraw = true; + } + + self.shape_until_scroll(font_system, prune); + + // Adjust horizontal scroll to include cursor + if let Some(layout_cursor) = self.layout_cursor(font_system, cursor) { + if let Some(layout_lines) = self.line_layout(font_system, layout_cursor.line) { + if let Some(layout_line) = layout_lines.get(layout_cursor.layout) { + let (x_min, x_max) = if let Some(glyph) = layout_line + .glyphs + .get(layout_cursor.glyph) + .or_else(|| layout_line.glyphs.last()) + { + //TODO: use code from cursor_glyph_opt? + let x_a = glyph.x; + let x_b = glyph.x + glyph.w; + (x_a.min(x_b), x_a.max(x_b)) + } else { + (0.0, 0.0) + }; + if x_min < self.scroll.horizontal { + self.scroll.horizontal = x_min; + self.redraw = true; + } + if let Some(width) = self.width_opt { + if x_max > self.scroll.horizontal + width { + self.scroll.horizontal = x_max - width; + self.redraw = true; + } + } + } + } + } + } + + /// Shape lines until scroll + #[allow(clippy::missing_panics_doc)] + pub fn shape_until_scroll(&mut self, font_system: &mut FontSystem, prune: bool) { + let metrics = self.metrics; + let old_scroll = self.scroll; + + loop { + // Adjust scroll.layout to be positive by moving scroll.line backwards + while self.scroll.vertical < 0.0 { + if self.scroll.line > 0 { + let line_i = self.scroll.line - 1; + if let Some(layout) = self.line_layout(font_system, line_i) { + let mut layout_height = 0.0; + for layout_line in layout.iter() { + layout_height += + layout_line.line_height_opt.unwrap_or(metrics.line_height); + } + self.scroll.line = line_i; + self.scroll.vertical += layout_height; + } else { + // If layout is missing, just assume line height + self.scroll.line = line_i; + self.scroll.vertical += metrics.line_height; + } + } else { + self.scroll.vertical = 0.0; + break; + } + } + + let scroll_start = self.scroll.vertical; + let scroll_end = scroll_start + self.height_opt.unwrap_or(f32::INFINITY); + + let mut total_height = 0.0; + for line_i in 0..self.lines.len() { + if line_i < self.scroll.line { + if prune { + self.lines[line_i].reset_shaping(); + } + continue; + } + if total_height > scroll_end { + if prune { + self.lines[line_i].reset_shaping(); + continue; + } else { + break; + } + } + + let mut layout_height = 0.0; + let layout = self + .line_layout(font_system, line_i) + .expect("shape_until_scroll invalid line"); + for layout_line in layout.iter() { + let line_height = layout_line.line_height_opt.unwrap_or(metrics.line_height); + layout_height += line_height; + total_height += line_height; + } + + // Adjust scroll.vertical to be smaller by moving scroll.line forwards + //TODO: do we want to adjust it exactly to a layout line? + if line_i == self.scroll.line && layout_height < self.scroll.vertical { + self.scroll.line += 1; + self.scroll.vertical -= layout_height; + } + } + + if total_height < scroll_end && self.scroll.line > 0 { + // Need to scroll up to stay inside of buffer + self.scroll.vertical -= scroll_end - total_height; + } else { + // Done adjusting scroll + break; + } + } + + if old_scroll != self.scroll { + self.redraw = true; + } + } + + /// Convert a [`Cursor`] to a [`LayoutCursor`] + pub fn layout_cursor( + &mut self, + font_system: &mut FontSystem, + cursor: Cursor, + ) -> Option { + let layout = self.line_layout(font_system, cursor.line)?; + for (layout_i, layout_line) in layout.iter().enumerate() { + for (glyph_i, glyph) in layout_line.glyphs.iter().enumerate() { + let cursor_end = + Cursor::new_with_affinity(cursor.line, glyph.end, Affinity::Before); + let cursor_start = + Cursor::new_with_affinity(cursor.line, glyph.start, Affinity::After); + let (cursor_left, cursor_right) = if glyph.level.is_ltr() { + (cursor_start, cursor_end) + } else { + (cursor_end, cursor_start) + }; + if cursor == cursor_left { + return Some(LayoutCursor::new(cursor.line, layout_i, glyph_i)); + } + if cursor == cursor_right { + return Some(LayoutCursor::new(cursor.line, layout_i, glyph_i + 1)); + } + } + } + + // Fall back to start of line + //TODO: should this be the end of the line? + Some(LayoutCursor::new(cursor.line, 0, 0)) + } + + /// Shape the provided line index and return the result + pub fn line_shape( + &mut self, + font_system: &mut FontSystem, + line_i: usize, + ) -> Option<&ShapeLine> { + let line = self.lines.get_mut(line_i)?; + Some(line.shape(font_system, self.tab_width)) + } + + /// Lay out the provided line index and return the result + pub fn line_layout( + &mut self, + font_system: &mut FontSystem, + line_i: usize, + ) -> Option<&[LayoutLine]> { + let line = self.lines.get_mut(line_i)?; + Some(line.layout( + font_system, + self.metrics.font_size, + self.width_opt, + self.wrap, + self.monospace_width, + self.tab_width, + )) + } + + /// Get the current [`Metrics`] + pub fn metrics(&self) -> Metrics { + self.metrics + } + + /// Set the current [`Metrics`] + /// + /// # Panics + /// + /// Will panic if `metrics.font_size` is zero. + pub fn set_metrics(&mut self, font_system: &mut FontSystem, metrics: Metrics) { + self.set_metrics_and_size(font_system, metrics, self.width_opt, self.height_opt); + } + + /// Get the current [`Wrap`] + pub fn wrap(&self) -> Wrap { + self.wrap + } + + /// Set the current [`Wrap`] + pub fn set_wrap(&mut self, font_system: &mut FontSystem, wrap: Wrap) { + if wrap != self.wrap { + self.wrap = wrap; + self.relayout(font_system); + self.shape_until_scroll(font_system, false); + } + } + + /// Get the current `monospace_width` + pub fn monospace_width(&self) -> Option { + self.monospace_width + } + + /// Set monospace width monospace glyphs should be resized to match. `None` means don't resize + pub fn set_monospace_width( + &mut self, + font_system: &mut FontSystem, + monospace_width: Option, + ) { + if monospace_width != self.monospace_width { + self.monospace_width = monospace_width; + self.relayout(font_system); + self.shape_until_scroll(font_system, false); + } + } + + /// Get the current `tab_width` + pub fn tab_width(&self) -> u16 { + self.tab_width + } + + /// Set tab width (number of spaces between tab stops) + pub fn set_tab_width(&mut self, font_system: &mut FontSystem, tab_width: u16) { + // A tab width of 0 is not allowed + if tab_width == 0 { + return; + } + if tab_width != self.tab_width { + self.tab_width = tab_width; + // Shaping must be reset when tab width is changed + for line in self.lines.iter_mut() { + if line.shape_opt().is_some() && line.text().contains('\t') { + line.reset_shaping(); + } + } + self.redraw = true; + self.shape_until_scroll(font_system, false); + } + } + + /// Get the current buffer dimensions (width, height) + pub fn size(&self) -> (Option, Option) { + (self.width_opt, self.height_opt) + } + + /// Set the current buffer dimensions + pub fn set_size( + &mut self, + font_system: &mut FontSystem, + width_opt: Option, + height_opt: Option, + ) { + self.set_metrics_and_size(font_system, self.metrics, width_opt, height_opt); + } + + /// Set the current [`Metrics`] and buffer dimensions at the same time + /// + /// # Panics + /// + /// Will panic if `metrics.font_size` is zero. + pub fn set_metrics_and_size( + &mut self, + font_system: &mut FontSystem, + metrics: Metrics, + width_opt: Option, + height_opt: Option, + ) { + let clamped_width_opt = width_opt.map(|width| width.max(0.0)); + let clamped_height_opt = height_opt.map(|height| height.max(0.0)); + + if metrics != self.metrics + || clamped_width_opt != self.width_opt + || clamped_height_opt != self.height_opt + { + assert_ne!(metrics.font_size, 0.0, "font size cannot be 0"); + self.metrics = metrics; + self.width_opt = clamped_width_opt; + self.height_opt = clamped_height_opt; + self.relayout(font_system); + self.shape_until_scroll(font_system, false); + } + } + + /// Get the current scroll location + pub fn scroll(&self) -> Scroll { + self.scroll + } + + /// Set the current scroll location + pub fn set_scroll(&mut self, scroll: Scroll) { + if scroll != self.scroll { + self.scroll = scroll; + self.redraw = true; + } + } + + /// Set text of buffer, using provided attributes for each line by default + pub fn set_text( + &mut self, + font_system: &mut FontSystem, + text: &str, + attrs: &Attrs, + shaping: Shaping, + ) { + self.lines.clear(); + for (range, ending) in LineIter::new(text) { + self.lines.push(BufferLine::new( + &text[range], + ending, + AttrsList::new(attrs), + shaping, + )); + } + if self.lines.is_empty() { + self.lines.push(BufferLine::new( + "", + LineEnding::default(), + AttrsList::new(attrs), + shaping, + )); + } + self.scroll = Scroll::default(); + self.shape_until_scroll(font_system, false); + } + + /// Set text of buffer, using an iterator of styled spans (pairs of text and attributes) + /// + /// ``` + /// # use cosmic_text::{Attrs, Buffer, Family, FontSystem, Metrics, Shaping}; + /// # let mut font_system = FontSystem::new(); + /// let mut buffer = Buffer::new_empty(Metrics::new(32.0, 44.0)); + /// let attrs = Attrs::new().family(Family::Serif); + /// buffer.set_rich_text( + /// &mut font_system, + /// [ + /// ("hello, ", attrs.clone()), + /// ("cosmic\ntext", attrs.clone().family(Family::Monospace)), + /// ], + /// &attrs, + /// Shaping::Advanced, + /// None, + /// ); + /// ``` + pub fn set_rich_text<'r, 's, I>( + &mut self, + font_system: &mut FontSystem, + spans: I, + default_attrs: &Attrs, + shaping: Shaping, + alignment: Option, + ) where + I: IntoIterator)>, + { + let mut end = 0; + // TODO: find a way to cache this string and vec for reuse + let (string, spans_data): (String, Vec<_>) = spans + .into_iter() + .map(|(s, attrs)| { + let start = end; + end += s.len(); + (s, (attrs, start..end)) + }) + .unzip(); + + let mut spans_iter = spans_data.into_iter(); + let mut maybe_span = spans_iter.next(); + + // split the string into lines, as ranges + let string_start = string.as_ptr() as usize; + let mut lines_iter = BidiParagraphs::new(&string).map(|line: &str| { + let start = line.as_ptr() as usize - string_start; + let end = start + line.len(); + start..end + }); + let mut maybe_line = lines_iter.next(); + //TODO: set this based on information from spans + let line_ending = LineEnding::default(); + + let mut line_count = 0; + let mut attrs_list = self + .lines + .get_mut(line_count) + .map(BufferLine::reclaim_attrs) + .unwrap_or_else(|| AttrsList::new(&Attrs::new())) + .reset(default_attrs); + let mut line_string = self + .lines + .get_mut(line_count) + .map(BufferLine::reclaim_text) + .unwrap_or_default(); + + loop { + let (Some(line_range), Some((attrs, span_range))) = (&maybe_line, &maybe_span) else { + // this is reached only if this text is empty + if self.lines.len() == line_count { + self.lines.push(BufferLine::empty()); + } + self.lines[line_count].reset_new( + String::new(), + line_ending, + AttrsList::new(default_attrs), + shaping, + ); + line_count += 1; + break; + }; + + // start..end is the intersection of this line and this span + let start = line_range.start.max(span_range.start); + let end = line_range.end.min(span_range.end); + if start < end { + let text = &string[start..end]; + let text_start = line_string.len(); + line_string.push_str(text); + let text_end = line_string.len(); + // Only add attrs if they don't match the defaults + if *attrs != attrs_list.defaults() { + attrs_list.add_span(text_start..text_end, attrs); + } + } + + // we know that at the end of a line, + // span text's end index is always >= line text's end index + // so if this span ends before this line ends, + // there is another span in this line. + // otherwise, we move on to the next line. + if span_range.end < line_range.end { + maybe_span = spans_iter.next(); + } else { + maybe_line = lines_iter.next(); + if maybe_line.is_some() { + // finalize this line and start a new line + let next_attrs_list = self + .lines + .get_mut(line_count + 1) + .map(BufferLine::reclaim_attrs) + .unwrap_or_else(|| AttrsList::new(&Attrs::new())) + .reset(default_attrs); + let next_line_string = self + .lines + .get_mut(line_count + 1) + .map(BufferLine::reclaim_text) + .unwrap_or_default(); + let prev_attrs_list = core::mem::replace(&mut attrs_list, next_attrs_list); + let prev_line_string = core::mem::replace(&mut line_string, next_line_string); + if self.lines.len() == line_count { + self.lines.push(BufferLine::empty()); + } + self.lines[line_count].reset_new( + prev_line_string, + line_ending, + prev_attrs_list, + shaping, + ); + line_count += 1; + } else { + // finalize the final line + if self.lines.len() == line_count { + self.lines.push(BufferLine::empty()); + } + self.lines[line_count].reset_new(line_string, line_ending, attrs_list, shaping); + line_count += 1; + break; + } + } + } + + // Discard excess lines now that we have reused as much of the existing allocations as possible. + self.lines.truncate(line_count); + + self.lines.iter_mut().for_each(|line| { + line.set_align(alignment); + }); + + self.scroll = Scroll::default(); + + self.shape_until_scroll(font_system, false); + } + + /// True if a redraw is needed + pub fn redraw(&self) -> bool { + self.redraw + } + + /// Set redraw needed flag + pub fn set_redraw(&mut self, redraw: bool) { + self.redraw = redraw; + } + + /// Get the visible layout runs for rendering and other tasks + pub fn layout_runs(&self) -> LayoutRunIter { + LayoutRunIter::new(self) + } + + /// Convert x, y position to Cursor (hit detection) + pub fn hit(&self, x: f32, y: f32) -> Option { + #[cfg(all(feature = "std", not(target_arch = "wasm32")))] + let instant = std::time::Instant::now(); + + let mut new_cursor_opt = None; + + let mut runs = self.layout_runs().peekable(); + let mut first_run = true; + while let Some(run) = runs.next() { + let line_top = run.line_top; + let line_height = run.line_height; + + if first_run && y < line_top { + first_run = false; + let new_cursor = Cursor::new(run.line_i, 0); + new_cursor_opt = Some(new_cursor); + } else if y >= line_top && y < line_top + line_height { + let mut new_cursor_glyph = run.glyphs.len(); + let mut new_cursor_char = 0; + let mut new_cursor_affinity = Affinity::After; + + let mut first_glyph = true; + + 'hit: for (glyph_i, glyph) in run.glyphs.iter().enumerate() { + if first_glyph { + first_glyph = false; + if (run.rtl && x > glyph.x) || (!run.rtl && x < 0.0) { + new_cursor_glyph = 0; + new_cursor_char = 0; + } + } + if x >= glyph.x && x <= glyph.x + glyph.w { + new_cursor_glyph = glyph_i; + + let cluster = &run.text[glyph.start..glyph.end]; + let total = cluster.grapheme_indices(true).count(); + let mut egc_x = glyph.x; + let egc_w = glyph.w / (total as f32); + for (egc_i, egc) in cluster.grapheme_indices(true) { + if x >= egc_x && x <= egc_x + egc_w { + new_cursor_char = egc_i; + + let right_half = x >= egc_x + egc_w / 2.0; + if right_half != glyph.level.is_rtl() { + // If clicking on last half of glyph, move cursor past glyph + new_cursor_char += egc.len(); + new_cursor_affinity = Affinity::Before; + } + break 'hit; + } + egc_x += egc_w; + } + + let right_half = x >= glyph.x + glyph.w / 2.0; + if right_half != glyph.level.is_rtl() { + // If clicking on last half of glyph, move cursor past glyph + new_cursor_char = cluster.len(); + new_cursor_affinity = Affinity::Before; + } + break 'hit; + } + } + + let mut new_cursor = Cursor::new(run.line_i, 0); + + match run.glyphs.get(new_cursor_glyph) { + Some(glyph) => { + // Position at glyph + new_cursor.index = glyph.start + new_cursor_char; + new_cursor.affinity = new_cursor_affinity; + } + None => { + if let Some(glyph) = run.glyphs.last() { + // Position at end of line + new_cursor.index = glyph.end; + new_cursor.affinity = Affinity::Before; + } + } + } + + new_cursor_opt = Some(new_cursor); + + break; + } else if runs.peek().is_none() && y > run.line_y { + let mut new_cursor = Cursor::new(run.line_i, 0); + if let Some(glyph) = run.glyphs.last() { + new_cursor = run.cursor_from_glyph_right(glyph); + } + new_cursor_opt = Some(new_cursor); + } + } + + #[cfg(all(feature = "std", not(target_arch = "wasm32")))] + log::trace!("click({}, {}): {:?}", x, y, instant.elapsed()); + + new_cursor_opt + } + + /// Apply a [`Motion`] to a [`Cursor`] + pub fn cursor_motion( + &mut self, + font_system: &mut FontSystem, + mut cursor: Cursor, + mut cursor_x_opt: Option, + motion: Motion, + ) -> Option<(Cursor, Option)> { + match motion { + Motion::LayoutCursor(layout_cursor) => { + let layout = self.line_layout(font_system, layout_cursor.line)?; + + let layout_line = match layout.get(layout_cursor.layout) { + Some(some) => some, + None => match layout.last() { + Some(some) => some, + None => { + return None; + } + }, + }; + + let (new_index, new_affinity) = match layout_line.glyphs.get(layout_cursor.glyph) { + Some(glyph) => (glyph.start, Affinity::After), + None => match layout_line.glyphs.last() { + Some(glyph) => (glyph.end, Affinity::Before), + //TODO: is this correct? + None => (0, Affinity::After), + }, + }; + + if cursor.line != layout_cursor.line + || cursor.index != new_index + || cursor.affinity != new_affinity + { + cursor.line = layout_cursor.line; + cursor.index = new_index; + cursor.affinity = new_affinity; + } + } + Motion::Previous => { + let line = self.lines.get(cursor.line)?; + if cursor.index > 0 { + // Find previous character index + let mut prev_index = 0; + for (i, _) in line.text().grapheme_indices(true) { + if i < cursor.index { + prev_index = i; + } else { + break; + } + } + + cursor.index = prev_index; + cursor.affinity = Affinity::After; + } else if cursor.line > 0 { + cursor.line -= 1; + cursor.index = self.lines.get(cursor.line)?.text().len(); + cursor.affinity = Affinity::After; + } + cursor_x_opt = None; + } + Motion::Next => { + let line = self.lines.get(cursor.line)?; + if cursor.index < line.text().len() { + for (i, c) in line.text().grapheme_indices(true) { + if i == cursor.index { + cursor.index += c.len(); + cursor.affinity = Affinity::Before; + break; + } + } + } else if cursor.line + 1 < self.lines.len() { + cursor.line += 1; + cursor.index = 0; + cursor.affinity = Affinity::Before; + } + cursor_x_opt = None; + } + Motion::Left => { + let rtl_opt = self + .line_shape(font_system, cursor.line) + .map(|shape| shape.rtl); + if let Some(rtl) = rtl_opt { + if rtl { + (cursor, cursor_x_opt) = + self.cursor_motion(font_system, cursor, cursor_x_opt, Motion::Next)?; + } else { + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::Previous, + )?; + } + } + } + Motion::Right => { + let rtl_opt = self + .line_shape(font_system, cursor.line) + .map(|shape| shape.rtl); + if let Some(rtl) = rtl_opt { + if rtl { + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::Previous, + )?; + } else { + (cursor, cursor_x_opt) = + self.cursor_motion(font_system, cursor, cursor_x_opt, Motion::Next)?; + } + } + } + Motion::Up => { + let mut layout_cursor = self.layout_cursor(font_system, cursor)?; + + if cursor_x_opt.is_none() { + cursor_x_opt = Some( + layout_cursor.glyph as i32, //TODO: glyph x position + ); + } + + if layout_cursor.layout > 0 { + layout_cursor.layout -= 1; + } else if layout_cursor.line > 0 { + layout_cursor.line -= 1; + layout_cursor.layout = usize::MAX; + } + + if let Some(cursor_x) = cursor_x_opt { + layout_cursor.glyph = cursor_x as usize; //TODO: glyph x position + } + + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::LayoutCursor(layout_cursor), + )?; + } + Motion::Down => { + let mut layout_cursor = self.layout_cursor(font_system, cursor)?; + + let layout_len = self.line_layout(font_system, layout_cursor.line)?.len(); + + if cursor_x_opt.is_none() { + cursor_x_opt = Some( + layout_cursor.glyph as i32, //TODO: glyph x position + ); + } + + if layout_cursor.layout + 1 < layout_len { + layout_cursor.layout += 1; + } else if layout_cursor.line + 1 < self.lines.len() { + layout_cursor.line += 1; + layout_cursor.layout = 0; + } + + if let Some(cursor_x) = cursor_x_opt { + layout_cursor.glyph = cursor_x as usize; //TODO: glyph x position + } + + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::LayoutCursor(layout_cursor), + )?; + } + Motion::Home => { + let mut layout_cursor = self.layout_cursor(font_system, cursor)?; + layout_cursor.glyph = 0; + #[allow(unused_assignments)] + { + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::LayoutCursor(layout_cursor), + )?; + } + cursor_x_opt = None; + } + Motion::SoftHome => { + let line = self.lines.get(cursor.line)?; + cursor.index = line + .text() + .char_indices() + .filter_map(|(i, c)| if c.is_whitespace() { None } else { Some(i) }) + .next() + .unwrap_or(0); + cursor_x_opt = None; + } + Motion::End => { + let mut layout_cursor = self.layout_cursor(font_system, cursor)?; + layout_cursor.glyph = usize::MAX; + #[allow(unused_assignments)] + { + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::LayoutCursor(layout_cursor), + )?; + } + cursor_x_opt = None; + } + Motion::ParagraphStart => { + cursor.index = 0; + cursor_x_opt = None; + } + Motion::ParagraphEnd => { + cursor.index = self.lines.get(cursor.line)?.text().len(); + cursor_x_opt = None; + } + Motion::PageUp => { + if let Some(height) = self.height_opt { + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::Vertical(-height as i32), + )?; + } + } + Motion::PageDown => { + if let Some(height) = self.height_opt { + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::Vertical(height as i32), + )?; + } + } + Motion::Vertical(px) => { + // TODO more efficient, use layout run line height + let lines = px / self.metrics().line_height as i32; + match lines.cmp(&0) { + cmp::Ordering::Less => { + for _ in 0..-lines { + (cursor, cursor_x_opt) = + self.cursor_motion(font_system, cursor, cursor_x_opt, Motion::Up)?; + } + } + cmp::Ordering::Greater => { + for _ in 0..lines { + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::Down, + )?; + } + } + cmp::Ordering::Equal => {} + } + } + Motion::PreviousWord => { + let line = self.lines.get(cursor.line)?; + if cursor.index > 0 { + cursor.index = line + .text() + .unicode_word_indices() + .rev() + .map(|(i, _)| i) + .find(|&i| i < cursor.index) + .unwrap_or(0); + } else if cursor.line > 0 { + cursor.line -= 1; + cursor.index = self.lines.get(cursor.line)?.text().len(); + } + cursor_x_opt = None; + } + Motion::NextWord => { + let line = self.lines.get(cursor.line)?; + if cursor.index < line.text().len() { + cursor.index = line + .text() + .unicode_word_indices() + .map(|(i, word)| i + word.len()) + .find(|&i| i > cursor.index) + .unwrap_or(line.text().len()); + } else if cursor.line + 1 < self.lines.len() { + cursor.line += 1; + cursor.index = 0; + } + cursor_x_opt = None; + } + Motion::LeftWord => { + let rtl_opt = self + .line_shape(font_system, cursor.line) + .map(|shape| shape.rtl); + if let Some(rtl) = rtl_opt { + if rtl { + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::NextWord, + )?; + } else { + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::PreviousWord, + )?; + } + } + } + Motion::RightWord => { + let rtl_opt = self + .line_shape(font_system, cursor.line) + .map(|shape| shape.rtl); + if let Some(rtl) = rtl_opt { + if rtl { + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::PreviousWord, + )?; + } else { + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::NextWord, + )?; + } + } + } + Motion::BufferStart => { + cursor.line = 0; + cursor.index = 0; + cursor_x_opt = None; + } + Motion::BufferEnd => { + cursor.line = self.lines.len().saturating_sub(1); + cursor.index = self.lines.get(cursor.line)?.text().len(); + cursor_x_opt = None; + } + Motion::GotoLine(line) => { + let mut layout_cursor = self.layout_cursor(font_system, cursor)?; + layout_cursor.line = line; + (cursor, cursor_x_opt) = self.cursor_motion( + font_system, + cursor, + cursor_x_opt, + Motion::LayoutCursor(layout_cursor), + )?; + } + } + Some((cursor, cursor_x_opt)) + } + + /// Draw the buffer + #[cfg(feature = "swash")] + pub fn draw( + &self, + font_system: &mut FontSystem, + cache: &mut crate::SwashCache, + color: Color, + mut f: F, + ) where + F: FnMut(i32, i32, u32, u32, Color), + { + for run in self.layout_runs() { + for glyph in run.glyphs.iter() { + let physical_glyph = glyph.physical((0., 0.), 1.0); + + let glyph_color = match glyph.color_opt { + Some(some) => some, + None => color, + }; + + cache.with_pixels( + font_system, + physical_glyph.cache_key, + glyph_color, + |x, y, color| { + f( + physical_glyph.x + x, + run.line_y as i32 + physical_glyph.y + y, + 1, + 1, + color, + ); + }, + ); + } + } + } +} + +impl BorrowedWithFontSystem<'_, Buffer> { + /// Shape lines until cursor, also scrolling to include cursor in view + pub fn shape_until_cursor(&mut self, cursor: Cursor, prune: bool) { + self.inner + .shape_until_cursor(self.font_system, cursor, prune); + } + + /// Shape lines until scroll + pub fn shape_until_scroll(&mut self, prune: bool) { + self.inner.shape_until_scroll(self.font_system, prune); + } + + /// Shape the provided line index and return the result + pub fn line_shape(&mut self, line_i: usize) -> Option<&ShapeLine> { + self.inner.line_shape(self.font_system, line_i) + } + + /// Lay out the provided line index and return the result + pub fn line_layout(&mut self, line_i: usize) -> Option<&[LayoutLine]> { + self.inner.line_layout(self.font_system, line_i) + } + + /// Set the current [`Metrics`] + /// + /// # Panics + /// + /// Will panic if `metrics.font_size` is zero. + pub fn set_metrics(&mut self, metrics: Metrics) { + self.inner.set_metrics(self.font_system, metrics); + } + + /// Set the current [`Wrap`] + pub fn set_wrap(&mut self, wrap: Wrap) { + self.inner.set_wrap(self.font_system, wrap); + } + + /// Set the current buffer dimensions + pub fn set_size(&mut self, width_opt: Option, height_opt: Option) { + self.inner.set_size(self.font_system, width_opt, height_opt); + } + + /// Set the current [`Metrics`] and buffer dimensions at the same time + /// + /// # Panics + /// + /// Will panic if `metrics.font_size` is zero. + pub fn set_metrics_and_size( + &mut self, + metrics: Metrics, + width_opt: Option, + height_opt: Option, + ) { + self.inner + .set_metrics_and_size(self.font_system, metrics, width_opt, height_opt); + } + + /// Set tab width (number of spaces between tab stops) + pub fn set_tab_width(&mut self, tab_width: u16) { + self.inner.set_tab_width(self.font_system, tab_width); + } + + /// Set text of buffer, using provided attributes for each line by default + pub fn set_text(&mut self, text: &str, attrs: &Attrs, shaping: Shaping) { + self.inner.set_text(self.font_system, text, attrs, shaping); + } + + /// Set text of buffer, using an iterator of styled spans (pairs of text and attributes) + /// + /// ``` + /// # use cosmic_text::{Attrs, Buffer, Family, FontSystem, Metrics, Shaping}; + /// # let mut font_system = FontSystem::new(); + /// let mut buffer = Buffer::new_empty(Metrics::new(32.0, 44.0)); + /// let attrs = Attrs::new().family(Family::Serif); + /// buffer.set_rich_text( + /// &mut font_system, + /// [ + /// ("hello, ", attrs.clone()), + /// ("cosmic\ntext", attrs.clone().family(Family::Monospace)), + /// ], + /// &attrs, + /// Shaping::Advanced, + /// None, + /// ); + /// ``` + pub fn set_rich_text<'r, 's, I>( + &mut self, + spans: I, + default_attrs: &Attrs, + shaping: Shaping, + alignment: Option, + ) where + I: IntoIterator)>, + { + self.inner + .set_rich_text(self.font_system, spans, default_attrs, shaping, alignment); + } + + /// Apply a [`Motion`] to a [`Cursor`] + pub fn cursor_motion( + &mut self, + cursor: Cursor, + cursor_x_opt: Option, + motion: Motion, + ) -> Option<(Cursor, Option)> { + self.inner + .cursor_motion(self.font_system, cursor, cursor_x_opt, motion) + } + + /// Draw the buffer + #[cfg(feature = "swash")] + pub fn draw(&mut self, cache: &mut crate::SwashCache, color: Color, f: F) + where + F: FnMut(i32, i32, u32, u32, Color), + { + self.inner.draw(self.font_system, cache, color, f); + } +} diff --git a/vendor/cosmic-text/src/buffer_line.rs b/vendor/cosmic-text/src/buffer_line.rs new file mode 100644 index 0000000..6929e03 --- /dev/null +++ b/vendor/cosmic-text/src/buffer_line.rs @@ -0,0 +1,310 @@ +#[cfg(not(feature = "std"))] +use alloc::{string::String, vec::Vec}; +use core::mem; + +use crate::{ + Align, Attrs, AttrsList, Cached, FontSystem, LayoutLine, LineEnding, ShapeLine, Shaping, Wrap, +}; + +/// A line (or paragraph) of text that is shaped and laid out +#[derive(Clone, Debug)] +pub struct BufferLine { + text: String, + ending: LineEnding, + attrs_list: AttrsList, + align: Option, + shape_opt: Cached, + layout_opt: Cached>, + shaping: Shaping, + metadata: Option, +} + +impl BufferLine { + /// Create a new line with the given text and attributes list + /// Cached shaping and layout can be done using the [`Self::shape`] and + /// [`Self::layout`] functions + pub fn new>( + text: T, + ending: LineEnding, + attrs_list: AttrsList, + shaping: Shaping, + ) -> Self { + Self { + text: text.into(), + ending, + attrs_list, + align: None, + shape_opt: Cached::Empty, + layout_opt: Cached::Empty, + shaping, + metadata: None, + } + } + + /// Resets the current line with new internal values. + /// + /// Avoids deallocating internal caches so they can be reused. + pub fn reset_new>( + &mut self, + text: T, + ending: LineEnding, + attrs_list: AttrsList, + shaping: Shaping, + ) { + self.text = text.into(); + self.ending = ending; + self.attrs_list = attrs_list; + self.align = None; + self.shape_opt.set_unused(); + self.layout_opt.set_unused(); + self.shaping = shaping; + self.metadata = None; + } + + /// Get current text + pub fn text(&self) -> &str { + &self.text + } + + /// Set text and attributes list + /// + /// Will reset shape and layout if it differs from current text and attributes list. + /// Returns true if the line was reset + pub fn set_text>( + &mut self, + text: T, + ending: LineEnding, + attrs_list: AttrsList, + ) -> bool { + let text = text.as_ref(); + if text != self.text || ending != self.ending || attrs_list != self.attrs_list { + self.text.clear(); + self.text.push_str(text); + self.ending = ending; + self.attrs_list = attrs_list; + self.reset(); + true + } else { + false + } + } + + /// Consume this line, returning only its text contents as a String. + pub fn into_text(self) -> String { + self.text + } + + /// Get line ending + pub fn ending(&self) -> LineEnding { + self.ending + } + + /// Set line ending + /// + /// Will reset shape and layout if it differs from current line ending. + /// Returns true if the line was reset + pub fn set_ending(&mut self, ending: LineEnding) -> bool { + if ending != self.ending { + self.ending = ending; + self.reset_shaping(); + true + } else { + false + } + } + + /// Get attributes list + pub fn attrs_list(&self) -> &AttrsList { + &self.attrs_list + } + + /// Set attributes list + /// + /// Will reset shape and layout if it differs from current attributes list. + /// Returns true if the line was reset + pub fn set_attrs_list(&mut self, attrs_list: AttrsList) -> bool { + if attrs_list != self.attrs_list { + self.attrs_list = attrs_list; + self.reset_shaping(); + true + } else { + false + } + } + + /// Get the Text alignment + pub fn align(&self) -> Option { + self.align + } + + /// Set the text alignment + /// + /// Will reset layout if it differs from current alignment. + /// Setting to None will use `Align::Right` for RTL lines, and `Align::Left` for LTR lines. + /// Returns true if the line was reset + pub fn set_align(&mut self, align: Option) -> bool { + if align != self.align { + self.align = align; + self.reset_layout(); + true + } else { + false + } + } + + /// Append line at end of this line + /// + /// The wrap setting of the appended line will be lost + pub fn append(&mut self, other: Self) { + let len = self.text.len(); + self.text.push_str(other.text()); + + if other.attrs_list.defaults() != self.attrs_list.defaults() { + // If default formatting does not match, make a new span for it + self.attrs_list + .add_span(len..len + other.text().len(), &other.attrs_list.defaults()); + } + + for (other_range, attrs) in other.attrs_list.spans_iter() { + // Add previous attrs spans + let range = other_range.start + len..other_range.end + len; + self.attrs_list.add_span(range, &attrs.as_attrs()); + } + + self.reset(); + } + + /// Split off new line at index + pub fn split_off(&mut self, index: usize) -> Self { + let text = self.text.split_off(index); + let attrs_list = self.attrs_list.split_off(index); + self.reset(); + + let mut new = Self::new(text, self.ending, attrs_list, self.shaping); + new.align = self.align; + new + } + + /// Reset shaping, layout, and metadata caches + pub fn reset(&mut self) { + self.metadata = None; + self.reset_shaping(); + } + + /// Reset shaping and layout caches + pub fn reset_shaping(&mut self) { + self.shape_opt.set_unused(); + self.reset_layout(); + } + + /// Reset only layout cache + pub fn reset_layout(&mut self) { + self.layout_opt.set_unused(); + } + + /// Shape line, will cache results + #[allow(clippy::missing_panics_doc)] + pub fn shape(&mut self, font_system: &mut FontSystem, tab_width: u16) -> &ShapeLine { + if self.shape_opt.is_unused() { + let mut line = self + .shape_opt + .take_unused() + .unwrap_or_else(ShapeLine::empty); + line.build( + font_system, + &self.text, + &self.attrs_list, + self.shaping, + tab_width, + ); + self.shape_opt.set_used(line); + self.layout_opt.set_unused(); + } + self.shape_opt.get().expect("shape not found") + } + + /// Get line shaping cache + pub fn shape_opt(&self) -> Option<&ShapeLine> { + self.shape_opt.get() + } + + /// Layout line, will cache results + #[allow(clippy::missing_panics_doc)] + pub fn layout( + &mut self, + font_system: &mut FontSystem, + font_size: f32, + width_opt: Option, + wrap: Wrap, + match_mono_width: Option, + tab_width: u16, + ) -> &[LayoutLine] { + if self.layout_opt.is_unused() { + let align = self.align; + let mut layout = self + .layout_opt + .take_unused() + .unwrap_or_else(|| Vec::with_capacity(1)); + let shape = self.shape(font_system, tab_width); + shape.layout_to_buffer( + &mut font_system.shape_buffer, + font_size, + width_opt, + wrap, + align, + &mut layout, + match_mono_width, + ); + self.layout_opt.set_used(layout); + } + self.layout_opt.get().expect("layout not found") + } + + /// Get line layout cache + pub fn layout_opt(&self) -> Option<&Vec> { + self.layout_opt.get() + } + + /// Get line metadata. This will be None if [`BufferLine::set_metadata`] has not been called + /// after the last reset of shaping and layout caches + pub fn metadata(&self) -> Option { + self.metadata + } + + /// Set line metadata. This is stored until the next line reset + pub fn set_metadata(&mut self, metadata: usize) { + self.metadata = Some(metadata); + } + + /// Makes an empty buffer line. + /// + /// The buffer line is in an invalid state after this is called. See [`Self::reset_new`]. + pub(crate) fn empty() -> Self { + Self { + text: String::default(), + ending: LineEnding::default(), + attrs_list: AttrsList::new(&Attrs::new()), + align: None, + shape_opt: Cached::Empty, + layout_opt: Cached::Empty, + shaping: Shaping::Advanced, + metadata: None, + } + } + + /// Reclaim attributes list memory that isn't needed any longer. + /// + /// The buffer line is in an invalid state after this is called. See [`Self::reset_new`]. + pub(crate) fn reclaim_attrs(&mut self) -> AttrsList { + mem::replace(&mut self.attrs_list, AttrsList::new(&Attrs::new())) + } + + /// Reclaim text memory that isn't needed any longer. + /// + /// The buffer line is in an invalid state after this is called. See [`Self::reset_new`]. + pub(crate) fn reclaim_text(&mut self) -> String { + let mut text = mem::take(&mut self.text); + text.clear(); + text + } +} diff --git a/vendor/cosmic-text/src/cached.rs b/vendor/cosmic-text/src/cached.rs new file mode 100644 index 0000000..cf7e1ac --- /dev/null +++ b/vendor/cosmic-text/src/cached.rs @@ -0,0 +1,81 @@ +use core::fmt::Debug; +use core::mem; + +/// Helper for caching a value when the value is optionally present in the 'unused' state. +#[derive(Clone, Debug)] +pub enum Cached { + Empty, + Unused(T), + Used(T), +} + +impl Cached { + /// Gets the value if in state `Self::Used`. + pub fn get(&self) -> Option<&T> { + match self { + Self::Empty | Self::Unused(_) => None, + Self::Used(t) => Some(t), + } + } + + /// Gets the value mutably if in state `Self::Used`. + pub fn get_mut(&mut self) -> Option<&mut T> { + match self { + Self::Empty | Self::Unused(_) => None, + Self::Used(t) => Some(t), + } + } + + /// Checks if the value is empty or unused. + pub fn is_unused(&self) -> bool { + match self { + Self::Empty | Self::Unused(_) => true, + Self::Used(_) => false, + } + } + + /// Checks if the value is used (i.e. cached for access). + pub fn is_used(&self) -> bool { + match self { + Self::Empty | Self::Unused(_) => false, + Self::Used(_) => true, + } + } + + /// Takes the buffered value if in state `Self::Unused`. + pub fn take_unused(&mut self) -> Option { + if matches!(*self, Self::Unused(_)) { + let Self::Unused(val) = mem::replace(self, Self::Empty) else { + unreachable!() + }; + Some(val) + } else { + None + } + } + + /// Takes the cached value if in state `Self::Used`. + pub fn take_used(&mut self) -> Option { + if matches!(*self, Self::Used(_)) { + let Self::Used(val) = mem::replace(self, Self::Empty) else { + unreachable!() + }; + Some(val) + } else { + None + } + } + + /// Moves the value from `Self::Used` to `Self::Unused`. + #[allow(clippy::missing_panics_doc)] + pub fn set_unused(&mut self) { + if matches!(*self, Self::Used(_)) { + *self = Self::Unused(self.take_used().expect("cached value should be used")); + } + } + + /// Sets the value to `Self::Used`. + pub fn set_used(&mut self, val: T) { + *self = Self::Used(val); + } +} diff --git a/vendor/cosmic-text/src/cursor.rs b/vendor/cosmic-text/src/cursor.rs new file mode 100644 index 0000000..e6358c6 --- /dev/null +++ b/vendor/cosmic-text/src/cursor.rs @@ -0,0 +1,156 @@ +/// Current cursor location +#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd)] +pub struct Cursor { + /// Index of [`BufferLine`] in [`Buffer::lines`] + pub line: usize, + /// First-byte-index of glyph at cursor (will insert behind this glyph) + pub index: usize, + /// Whether to associate the cursor with the run before it or the run after it if placed at the + /// boundary between two runs + pub affinity: Affinity, +} + +impl Cursor { + /// Create a new cursor + pub const fn new(line: usize, index: usize) -> Self { + Self::new_with_affinity(line, index, Affinity::Before) + } + + /// Create a new cursor, specifying the affinity + pub const fn new_with_affinity(line: usize, index: usize, affinity: Affinity) -> Self { + Self { + line, + index, + affinity, + } + } +} + +/// Whether to associate cursors placed at a boundary between runs with the run before or after it. +#[derive(Copy, Clone, Debug, Default, Eq, PartialEq, Ord, PartialOrd)] +pub enum Affinity { + #[default] + Before, + After, +} + +impl Affinity { + pub fn before(&self) -> bool { + *self == Self::Before + } + + pub fn after(&self) -> bool { + *self == Self::After + } + + pub fn from_before(before: bool) -> Self { + if before { + Self::Before + } else { + Self::After + } + } + + pub fn from_after(after: bool) -> Self { + if after { + Self::After + } else { + Self::Before + } + } +} + +/// The position of a cursor within a [`Buffer`]. +#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd)] +pub struct LayoutCursor { + /// Index of [`BufferLine`] in [`Buffer::lines`] + pub line: usize, + /// Index of [`LayoutLine`] in [`BufferLine::layout`] + pub layout: usize, + /// Index of [`LayoutGlyph`] in [`LayoutLine::glyphs`] + pub glyph: usize, +} + +impl LayoutCursor { + /// Create a new [`LayoutCursor`] + pub const fn new(line: usize, layout: usize, glyph: usize) -> Self { + Self { + line, + layout, + glyph, + } + } +} + +/// A motion to perform on a [`Cursor`] +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum Motion { + /// Apply specific [`LayoutCursor`] + LayoutCursor(LayoutCursor), + /// Move cursor to previous character ([`Self::Left`] in LTR, [`Self::Right`] in RTL) + Previous, + /// Move cursor to next character ([`Self::Right`] in LTR, [`Self::Left`] in RTL) + Next, + /// Move cursor left + Left, + /// Move cursor right + Right, + /// Move cursor up + Up, + /// Move cursor down + Down, + /// Move cursor to start of line + Home, + /// Move cursor to start of line, skipping whitespace + SoftHome, + /// Move cursor to end of line + End, + /// Move cursor to start of paragraph + ParagraphStart, + /// Move cursor to end of paragraph + ParagraphEnd, + /// Move cursor up one page + PageUp, + /// Move cursor down one page + PageDown, + /// Move cursor up or down by a number of pixels + Vertical(i32), + /// Move cursor to previous word boundary + PreviousWord, + /// Move cursor to next word boundary + NextWord, + /// Move cursor to next word boundary to the left + LeftWord, + /// Move cursor to next word boundary to the right + RightWord, + /// Move cursor to the start of the document + BufferStart, + /// Move cursor to the end of the document + BufferEnd, + /// Move cursor to specific line + GotoLine(usize), +} + +/// Scroll position in [`Buffer`] +#[derive(Clone, Copy, Debug, Default, PartialEq, PartialOrd)] +pub struct Scroll { + /// Index of [`BufferLine`] in [`Buffer::lines`]. This will be adjusted as needed if layout is + /// out of bounds + pub line: usize, + /// Pixel offset from the start of the [`BufferLine`]. This will be adjusted as needed + /// if it is negative or exceeds the height of the [`BufferLine::layout`] lines. + pub vertical: f32, + /// The horizontal position of scroll in fractional pixels + pub horizontal: f32, +} + +impl Scroll { + /// Create a new scroll + pub const fn new(line: usize, vertical: f32, horizontal: f32) -> Self { + Self { + line, + vertical, + horizontal, + } + } +} diff --git a/vendor/cosmic-text/src/edit/editor.rs b/vendor/cosmic-text/src/edit/editor.rs new file mode 100644 index 0000000..c1b63d8 --- /dev/null +++ b/vendor/cosmic-text/src/edit/editor.rs @@ -0,0 +1,922 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +#[cfg(not(feature = "std"))] +use alloc::{ + string::{String, ToString}, + vec::Vec, +}; +use core::{cmp, iter::once}; +use unicode_segmentation::UnicodeSegmentation; + +#[cfg(feature = "swash")] +use crate::Color; +use crate::{ + Action, Attrs, AttrsList, BorrowedWithFontSystem, BufferLine, BufferRef, Change, ChangeItem, + Cursor, Edit, FontSystem, LayoutRun, Selection, Shaping, +}; + +/// A wrapper of [`Buffer`] for easy editing +#[derive(Debug, Clone)] +pub struct Editor<'buffer> { + buffer_ref: BufferRef<'buffer>, + cursor: Cursor, + cursor_x_opt: Option, + selection: Selection, + cursor_moved: bool, + auto_indent: bool, + change: Option, +} + +fn cursor_glyph_opt(cursor: &Cursor, run: &LayoutRun) -> Option<(usize, f32)> { + if cursor.line == run.line_i { + for (glyph_i, glyph) in run.glyphs.iter().enumerate() { + if cursor.index == glyph.start { + return Some((glyph_i, 0.0)); + } else if cursor.index > glyph.start && cursor.index < glyph.end { + // Guess x offset based on characters + let mut before = 0; + let mut total = 0; + + let cluster = &run.text[glyph.start..glyph.end]; + for (i, _) in cluster.grapheme_indices(true) { + if glyph.start + i < cursor.index { + before += 1; + } + total += 1; + } + + let offset = glyph.w * (before as f32) / (total as f32); + return Some((glyph_i, offset)); + } + } + match run.glyphs.last() { + Some(glyph) => { + if cursor.index == glyph.end { + return Some((run.glyphs.len(), 0.0)); + } + } + None => { + return Some((0, 0.0)); + } + } + } + None +} + +fn cursor_position(cursor: &Cursor, run: &LayoutRun) -> Option<(i32, i32)> { + let (cursor_glyph, cursor_glyph_offset) = cursor_glyph_opt(cursor, run)?; + let x = match run.glyphs.get(cursor_glyph) { + Some(glyph) => { + // Start of detected glyph + if glyph.level.is_rtl() { + (glyph.x + glyph.w - cursor_glyph_offset) as i32 + } else { + (glyph.x + cursor_glyph_offset) as i32 + } + } + None => match run.glyphs.last() { + Some(glyph) => { + // End of last glyph + if glyph.level.is_rtl() { + glyph.x as i32 + } else { + (glyph.x + glyph.w) as i32 + } + } + None => { + // Start of empty line + 0 + } + }, + }; + + Some((x, run.line_top as i32)) +} + +impl<'buffer> Editor<'buffer> { + /// Create a new [`Editor`] with the provided [`Buffer`] + pub fn new(buffer: impl Into>) -> Self { + Self { + buffer_ref: buffer.into(), + cursor: Cursor::default(), + cursor_x_opt: None, + selection: Selection::None, + cursor_moved: false, + auto_indent: false, + change: None, + } + } + + /// Draw the editor + #[cfg(feature = "swash")] + #[allow(clippy::too_many_arguments)] + pub fn draw( + &self, + font_system: &mut FontSystem, + cache: &mut crate::SwashCache, + text_color: Color, + cursor_color: Color, + selection_color: Color, + selected_text_color: Color, + mut f: F, + ) where + F: FnMut(i32, i32, u32, u32, Color), + { + let selection_bounds = self.selection_bounds(); + self.with_buffer(|buffer| { + for run in buffer.layout_runs() { + let line_i = run.line_i; + let line_y = run.line_y; + let line_top = run.line_top; + let line_height = run.line_height; + + // Highlight selection + if let Some((start, end)) = selection_bounds { + if line_i >= start.line && line_i <= end.line { + let mut range_opt = None; + for glyph in run.glyphs.iter() { + // Guess x offset based on characters + let cluster = &run.text[glyph.start..glyph.end]; + let total = cluster.grapheme_indices(true).count(); + let mut c_x = glyph.x; + let c_w = glyph.w / total as f32; + for (i, c) in cluster.grapheme_indices(true) { + let c_start = glyph.start + i; + let c_end = glyph.start + i + c.len(); + if (start.line != line_i || c_end > start.index) + && (end.line != line_i || c_start < end.index) + { + range_opt = match range_opt.take() { + Some((min, max)) => Some(( + cmp::min(min, c_x as i32), + cmp::max(max, (c_x + c_w) as i32), + )), + None => Some((c_x as i32, (c_x + c_w) as i32)), + }; + } else if let Some((min, max)) = range_opt.take() { + f( + min, + line_top as i32, + cmp::max(0, max - min) as u32, + line_height as u32, + selection_color, + ); + } + c_x += c_w; + } + } + + if run.glyphs.is_empty() && end.line > line_i { + // Highlight all of internal empty lines + range_opt = Some((0, buffer.size().0.unwrap_or(0.0) as i32)); + } + + if let Some((mut min, mut max)) = range_opt.take() { + if end.line > line_i { + // Draw to end of line + if run.rtl { + min = 0; + } else { + max = buffer.size().0.unwrap_or(0.0) as i32; + } + } + f( + min, + line_top as i32, + cmp::max(0, max - min) as u32, + line_height as u32, + selection_color, + ); + } + } + } + + // Draw cursor + if let Some((x, y)) = cursor_position(&self.cursor, &run) { + f(x, y, 1, line_height as u32, cursor_color); + } + + for glyph in run.glyphs.iter() { + let physical_glyph = glyph.physical((0., 0.), 1.0); + + let mut glyph_color = match glyph.color_opt { + Some(some) => some, + None => text_color, + }; + if text_color != selected_text_color { + if let Some((start, end)) = selection_bounds { + if line_i >= start.line + && line_i <= end.line + && (start.line != line_i || glyph.end > start.index) + && (end.line != line_i || glyph.start < end.index) + { + glyph_color = selected_text_color; + } + } + } + + cache.with_pixels( + font_system, + physical_glyph.cache_key, + glyph_color, + |x, y, color| { + f( + physical_glyph.x + x, + line_y as i32 + physical_glyph.y + y, + 1, + 1, + color, + ); + }, + ); + } + } + }); + } +} + +impl<'buffer> Edit<'buffer> for Editor<'buffer> { + fn buffer_ref(&self) -> &BufferRef<'buffer> { + &self.buffer_ref + } + + fn buffer_ref_mut(&mut self) -> &mut BufferRef<'buffer> { + &mut self.buffer_ref + } + + fn cursor(&self) -> Cursor { + self.cursor + } + + fn set_cursor(&mut self, cursor: Cursor) { + if self.cursor != cursor { + self.cursor = cursor; + self.cursor_moved = true; + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + } + } + + fn selection(&self) -> Selection { + self.selection + } + + fn set_selection(&mut self, selection: Selection) { + if self.selection != selection { + self.selection = selection; + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + } + } + + fn auto_indent(&self) -> bool { + self.auto_indent + } + + fn set_auto_indent(&mut self, auto_indent: bool) { + self.auto_indent = auto_indent; + } + + fn tab_width(&self) -> u16 { + self.with_buffer(|buffer| buffer.tab_width()) + } + + fn set_tab_width(&mut self, font_system: &mut FontSystem, tab_width: u16) { + self.with_buffer_mut(|buffer| buffer.set_tab_width(font_system, tab_width)); + } + + fn shape_as_needed(&mut self, font_system: &mut FontSystem, prune: bool) { + if self.cursor_moved { + let cursor = self.cursor; + self.with_buffer_mut(|buffer| buffer.shape_until_cursor(font_system, cursor, prune)); + self.cursor_moved = false; + } else { + self.with_buffer_mut(|buffer| buffer.shape_until_scroll(font_system, prune)); + } + } + + fn delete_range(&mut self, start: Cursor, end: Cursor) { + let change_item = self.with_buffer_mut(|buffer| { + // Collect removed data for change tracking + let mut change_lines = Vec::new(); + + // Delete the selection from the last line + let end_line_opt = if end.line > start.line { + // Get part of line after selection + let after = buffer.lines[end.line].split_off(end.index); + + // Remove end line + let removed = buffer.lines.remove(end.line); + change_lines.insert(0, removed.text().to_string()); + + Some(after) + } else { + None + }; + + // Delete interior lines (in reverse for safety) + for line_i in (start.line + 1..end.line).rev() { + let removed = buffer.lines.remove(line_i); + change_lines.insert(0, removed.text().to_string()); + } + + // Delete the selection from the first line + { + // Get part after selection if start line is also end line + let after_opt = if start.line == end.line { + Some(buffer.lines[start.line].split_off(end.index)) + } else { + None + }; + + // Delete selected part of line + let removed = buffer.lines[start.line].split_off(start.index); + change_lines.insert(0, removed.text().to_string()); + + // Re-add part of line after selection + if let Some(after) = after_opt { + buffer.lines[start.line].append(after); + } + + // Re-add valid parts of end line + if let Some(end_line) = end_line_opt { + buffer.lines[start.line].append(end_line); + } + } + + ChangeItem { + start, + end, + text: change_lines.join("\n"), + insert: false, + } + }); + + if let Some(ref mut change) = self.change { + change.items.push(change_item); + } + } + + fn insert_at( + &mut self, + mut cursor: Cursor, + data: &str, + attrs_list: Option, + ) -> Cursor { + let mut remaining_split_len = data.len(); + if remaining_split_len == 0 { + return cursor; + } + + let change_item = self.with_buffer_mut(|buffer| { + // Save cursor for change tracking + let start = cursor; + + // Ensure there are enough lines in the buffer to handle this cursor + while cursor.line >= buffer.lines.len() { + let ending = buffer + .lines + .last() + .map(|line| line.ending()) + .unwrap_or_default(); + let line = BufferLine::new( + String::new(), + ending, + AttrsList::new(&attrs_list.as_ref().map_or_else( + || { + buffer + .lines + .last() + .map_or(Attrs::new(), |line| line.attrs_list().defaults()) + }, + |x| x.defaults(), + )), + Shaping::Advanced, + ); + buffer.lines.push(line); + } + + let line: &mut BufferLine = &mut buffer.lines[cursor.line]; + let insert_line = cursor.line + 1; + let ending = line.ending(); + + // Collect text after insertion as a line + let after: BufferLine = line.split_off(cursor.index); + let after_len = after.text().len(); + + // Collect attributes + let mut final_attrs = attrs_list.unwrap_or_else(|| { + AttrsList::new(&line.attrs_list().get_span(cursor.index.saturating_sub(1))) + }); + + // Append the inserted text, line by line + // we want to see a blank entry if the string ends with a newline + //TODO: adjust this to get line ending from data? + let addendum = once("").filter(|_| data.ends_with('\n')); + let mut lines_iter = data.split_inclusive('\n').chain(addendum); + if let Some(data_line) = lines_iter.next() { + let mut these_attrs = final_attrs.split_off(data_line.len()); + remaining_split_len -= data_line.len(); + core::mem::swap(&mut these_attrs, &mut final_attrs); + line.append(BufferLine::new( + data_line + .strip_suffix(char::is_control) + .unwrap_or(data_line), + ending, + these_attrs, + Shaping::Advanced, + )); + } else { + panic!("str::lines() did not yield any elements"); + } + if let Some(data_line) = lines_iter.next_back() { + remaining_split_len -= data_line.len(); + let mut tmp = BufferLine::new( + data_line + .strip_suffix(char::is_control) + .unwrap_or(data_line), + ending, + final_attrs.split_off(remaining_split_len), + Shaping::Advanced, + ); + tmp.append(after); + buffer.lines.insert(insert_line, tmp); + cursor.line += 1; + } else { + line.append(after); + } + for data_line in lines_iter.rev() { + remaining_split_len -= data_line.len(); + let tmp = BufferLine::new( + data_line + .strip_suffix(char::is_control) + .unwrap_or(data_line), + ending, + final_attrs.split_off(remaining_split_len), + Shaping::Advanced, + ); + buffer.lines.insert(insert_line, tmp); + cursor.line += 1; + } + + assert_eq!(remaining_split_len, 0); + + // Append the text after insertion + cursor.index = buffer.lines[cursor.line].text().len() - after_len; + + ChangeItem { + start, + end: cursor, + text: data.to_string(), + insert: true, + } + }); + + if let Some(ref mut change) = self.change { + change.items.push(change_item); + } + + cursor + } + + fn copy_selection(&self) -> Option { + let (start, end) = self.selection_bounds()?; + self.with_buffer(|buffer| { + let mut selection = String::new(); + // Take the selection from the first line + { + // Add selected part of line to string + if start.line == end.line { + selection.push_str(&buffer.lines[start.line].text()[start.index..end.index]); + } else { + selection.push_str(&buffer.lines[start.line].text()[start.index..]); + selection.push('\n'); + } + } + + // Take the selection from all interior lines (if they exist) + for line_i in start.line + 1..end.line { + selection.push_str(buffer.lines[line_i].text()); + selection.push('\n'); + } + + // Take the selection from the last line + if end.line > start.line { + // Add selected part of line to string + selection.push_str(&buffer.lines[end.line].text()[..end.index]); + } + + Some(selection) + }) + } + + fn delete_selection(&mut self) -> bool { + let (start, end) = match self.selection_bounds() { + Some(some) => some, + None => return false, + }; + + // Reset cursor to start of selection + self.cursor = start; + + // Reset selection to None + self.selection = Selection::None; + + // Delete from start to end of selection + self.delete_range(start, end); + + true + } + + fn apply_change(&mut self, change: &Change) -> bool { + // Cannot apply changes if there is a pending change + if let Some(pending) = self.change.take() { + if !pending.items.is_empty() { + //TODO: is this a good idea? + log::warn!("pending change caused apply_change to be ignored!"); + self.change = Some(pending); + return false; + } + } + + for item in change.items.iter() { + //TODO: edit cursor if needed? + if item.insert { + self.cursor = self.insert_at(item.start, &item.text, None); + } else { + self.cursor = item.start; + self.delete_range(item.start, item.end); + } + } + true + } + + fn start_change(&mut self) { + if self.change.is_none() { + self.change = Some(Change::default()); + } + } + + fn finish_change(&mut self) -> Option { + self.change.take() + } + + fn action(&mut self, font_system: &mut FontSystem, action: Action) { + let old_cursor = self.cursor; + + match action { + Action::Motion(motion) => { + let cursor = self.cursor; + let cursor_x_opt = self.cursor_x_opt; + if let Some((new_cursor, new_cursor_x_opt)) = self.with_buffer_mut(|buffer| { + buffer.cursor_motion(font_system, cursor, cursor_x_opt, motion) + }) { + self.cursor = new_cursor; + self.cursor_x_opt = new_cursor_x_opt; + } + } + Action::Escape => { + match self.selection { + Selection::None => {} + _ => self.with_buffer_mut(|buffer| buffer.set_redraw(true)), + } + self.selection = Selection::None; + } + Action::Insert(character) => { + if character.is_control() && !['\t', '\n', '\u{92}'].contains(&character) { + // Filter out special chars (except for tab), use Action instead + log::debug!("Refusing to insert control character {:?}", character); + } else if character == '\n' { + self.action(font_system, Action::Enter); + } else { + let mut str_buf = [0u8; 8]; + let str_ref = character.encode_utf8(&mut str_buf); + self.insert_string(str_ref, None); + } + } + Action::Enter => { + //TODO: what about indenting more after opening brackets or parentheses? + if self.auto_indent { + let mut string = String::from("\n"); + self.with_buffer(|buffer| { + let line = &buffer.lines[self.cursor.line]; + let text = line.text(); + for c in text.chars() { + if c.is_whitespace() { + string.push(c); + } else { + break; + } + } + }); + self.insert_string(&string, None); + } else { + self.insert_string("\n", None); + } + + // Ensure line is properly shaped and laid out (for potential immediate commands) + let line_i = self.cursor.line; + self.with_buffer_mut(|buffer| { + buffer.line_layout(font_system, line_i); + }); + } + Action::Backspace => { + if self.delete_selection() { + // Deleted selection + } else { + // Save current cursor as end + let end = self.cursor; + + if self.cursor.index > 0 { + // Move cursor to previous character index + self.cursor.index = self.with_buffer(|buffer| { + buffer.lines[self.cursor.line].text()[..self.cursor.index] + .char_indices() + .next_back() + .map_or(0, |(i, _)| i) + }); + } else if self.cursor.line > 0 { + // Move cursor to previous line + self.cursor.line -= 1; + self.cursor.index = + self.with_buffer(|buffer| buffer.lines[self.cursor.line].text().len()); + } + + if self.cursor != end { + // Delete range + self.delete_range(self.cursor, end); + } + } + } + Action::Delete => { + if self.delete_selection() { + // Deleted selection + } else { + // Save current cursor as start and end + let mut start = self.cursor; + let mut end = self.cursor; + + self.with_buffer(|buffer| { + if start.index < buffer.lines[start.line].text().len() { + let line = &buffer.lines[start.line]; + + let range_opt = line + .text() + .grapheme_indices(true) + .take_while(|(i, _)| *i <= start.index) + .last() + .map(|(i, c)| i..(i + c.len())); + + if let Some(range) = range_opt { + start.index = range.start; + end.index = range.end; + } + } else if start.line + 1 < buffer.lines.len() { + end.line += 1; + end.index = 0; + } + }); + + if start != end { + self.cursor = start; + self.delete_range(start, end); + } + } + } + Action::Indent => { + // Get start and end of selection + let (start, end) = match self.selection_bounds() { + Some(some) => some, + None => (self.cursor, self.cursor), + }; + + // For every line in selection + let tab_width: usize = self.tab_width().into(); + for line_i in start.line..=end.line { + // Determine indexes of last indent and first character after whitespace + let mut after_whitespace = 0; + let mut required_indent = 0; + self.with_buffer(|buffer| { + let line = &buffer.lines[line_i]; + let text = line.text(); + // Default to end of line if no non-whitespace found + after_whitespace = text.len(); + for (count, (index, c)) in text.char_indices().enumerate() { + if !c.is_whitespace() { + after_whitespace = index; + required_indent = tab_width - (count % tab_width); + break; + } + } + }); + + // No indent required (not possible?) + if required_indent == 0 { + required_indent = tab_width; + } + + self.insert_at( + Cursor::new(line_i, after_whitespace), + &" ".repeat(required_indent), + None, + ); + + // Adjust cursor + if self.cursor.line == line_i { + //TODO: should we be forcing cursor index to current indent location? + if self.cursor.index < after_whitespace { + self.cursor.index = after_whitespace; + } + self.cursor.index += required_indent; + } + + // Adjust selection + match self.selection { + Selection::None => {} + Selection::Normal(ref mut select) + | Selection::Line(ref mut select) + | Selection::Word(ref mut select) => { + if select.line == line_i && select.index >= after_whitespace { + select.index += required_indent; + } + } + } + + // Request redraw + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + } + } + Action::Unindent => { + // Get start and end of selection + let (start, end) = match self.selection_bounds() { + Some(some) => some, + None => (self.cursor, self.cursor), + }; + + // For every line in selection + let tab_width: usize = self.tab_width().into(); + for line_i in start.line..=end.line { + // Determine indexes of last indent and first character after whitespace + let mut last_indent = 0; + let mut after_whitespace = 0; + self.with_buffer(|buffer| { + let line = &buffer.lines[line_i]; + let text = line.text(); + // Default to end of line if no non-whitespace found + after_whitespace = text.len(); + for (count, (index, c)) in text.char_indices().enumerate() { + if !c.is_whitespace() { + after_whitespace = index; + break; + } + if count % tab_width == 0 { + last_indent = index; + } + } + }); + + // No de-indent required + if last_indent == after_whitespace { + continue; + } + + // Delete one indent + self.delete_range( + Cursor::new(line_i, last_indent), + Cursor::new(line_i, after_whitespace), + ); + + // Adjust cursor + if self.cursor.line == line_i && self.cursor.index > last_indent { + self.cursor.index -= after_whitespace - last_indent; + } + + // Adjust selection + match self.selection { + Selection::None => {} + Selection::Normal(ref mut select) + | Selection::Line(ref mut select) + | Selection::Word(ref mut select) => { + if select.line == line_i && select.index > last_indent { + select.index -= after_whitespace - last_indent; + } + } + } + + // Request redraw + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + } + } + Action::Click { x, y } => { + self.set_selection(Selection::None); + + if let Some(new_cursor) = self.with_buffer(|buffer| buffer.hit(x as f32, y as f32)) + { + if new_cursor != self.cursor { + self.cursor = new_cursor; + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + } + } + } + Action::DoubleClick { x, y } => { + self.set_selection(Selection::None); + + if let Some(new_cursor) = self.with_buffer(|buffer| buffer.hit(x as f32, y as f32)) + { + if new_cursor != self.cursor { + self.cursor = new_cursor; + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + } + self.selection = Selection::Word(self.cursor); + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + } + } + Action::TripleClick { x, y } => { + self.set_selection(Selection::None); + + if let Some(new_cursor) = self.with_buffer(|buffer| buffer.hit(x as f32, y as f32)) + { + if new_cursor != self.cursor { + self.cursor = new_cursor; + } + self.selection = Selection::Line(self.cursor); + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + } + } + Action::Drag { x, y } => { + if self.selection == Selection::None { + self.selection = Selection::Normal(self.cursor); + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + } + + if let Some(new_cursor) = self.with_buffer(|buffer| buffer.hit(x as f32, y as f32)) + { + if new_cursor != self.cursor { + self.cursor = new_cursor; + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + } + } + } + Action::Scroll { lines } => { + self.with_buffer_mut(|buffer| { + let mut scroll = buffer.scroll(); + //TODO: align to layout lines + scroll.vertical += lines as f32 * buffer.metrics().line_height; + buffer.set_scroll(scroll); + }); + } + } + + if old_cursor != self.cursor { + self.cursor_moved = true; + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + + /*TODO + if let Some(glyph) = run.glyphs.get(new_cursor_glyph) { + let font_opt = self.buffer.font_system().get_font(glyph.cache_key.font_id); + let text_glyph = &run.text[glyph.start..glyph.end]; + log::debug!( + "{}, {}: '{}' ('{}'): '{}' ({:?})", + self.cursor.line, + self.cursor.index, + font_opt.as_ref().map_or("?", |font| font.info.family.as_str()), + font_opt.as_ref().map_or("?", |font| font.info.post_script_name.as_str()), + text_glyph, + text_glyph + ); + } + */ + } + } + + fn cursor_position(&self) -> Option<(i32, i32)> { + self.with_buffer(|buffer| { + buffer + .layout_runs() + .find_map(|run| cursor_position(&self.cursor, &run)) + }) + } +} + +impl BorrowedWithFontSystem<'_, Editor<'_>> { + #[cfg(feature = "swash")] + pub fn draw( + &mut self, + cache: &mut crate::SwashCache, + text_color: Color, + cursor_color: Color, + selection_color: Color, + selected_text_color: Color, + f: F, + ) where + F: FnMut(i32, i32, u32, u32, Color), + { + self.inner.draw( + self.font_system, + cache, + text_color, + cursor_color, + selection_color, + selected_text_color, + f, + ); + } +} diff --git a/vendor/cosmic-text/src/edit/mod.rs b/vendor/cosmic-text/src/edit/mod.rs new file mode 100644 index 0000000..a27fa41 --- /dev/null +++ b/vendor/cosmic-text/src/edit/mod.rs @@ -0,0 +1,366 @@ +use alloc::sync::Arc; +#[cfg(not(feature = "std"))] +use alloc::{string::String, vec::Vec}; +use core::cmp; +use unicode_segmentation::UnicodeSegmentation; + +use crate::{AttrsList, BorrowedWithFontSystem, Buffer, Cursor, FontSystem, Motion}; + +pub use self::editor::*; +mod editor; + +#[cfg(feature = "syntect")] +pub use self::syntect::*; +#[cfg(feature = "syntect")] +mod syntect; + +#[cfg(feature = "vi")] +pub use self::vi::*; +#[cfg(feature = "vi")] +mod vi; + +/// An action to perform on an [`Editor`] +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum Action { + /// Move the cursor with some motion + Motion(Motion), + /// Escape, clears selection + Escape, + /// Insert character at cursor + Insert(char), + /// Create new line + Enter, + /// Delete text behind cursor + Backspace, + /// Delete text in front of cursor + Delete, + // Indent text (typically Tab) + Indent, + // Unindent text (typically Shift+Tab) + Unindent, + /// Mouse click at specified position + Click { + x: i32, + y: i32, + }, + /// Mouse double click at specified position + DoubleClick { + x: i32, + y: i32, + }, + /// Mouse triple click at specified position + TripleClick { + x: i32, + y: i32, + }, + /// Mouse drag to specified position + Drag { + x: i32, + y: i32, + }, + /// Scroll specified number of lines + Scroll { + lines: i32, + }, +} + +#[derive(Debug)] +pub enum BufferRef<'buffer> { + Owned(Buffer), + Borrowed(&'buffer mut Buffer), + Arc(Arc), +} + +impl Clone for BufferRef<'_> { + fn clone(&self) -> Self { + match self { + Self::Owned(buffer) => Self::Owned(buffer.clone()), + Self::Borrowed(buffer) => Self::Owned((*buffer).clone()), + Self::Arc(buffer) => Self::Arc(buffer.clone()), + } + } +} + +impl From for BufferRef<'_> { + fn from(buffer: Buffer) -> Self { + Self::Owned(buffer) + } +} + +impl<'buffer> From<&'buffer mut Buffer> for BufferRef<'buffer> { + fn from(buffer: &'buffer mut Buffer) -> Self { + Self::Borrowed(buffer) + } +} + +impl From> for BufferRef<'_> { + fn from(arc: Arc) -> Self { + Self::Arc(arc) + } +} + +/// A unique change to an editor +#[derive(Clone, Debug)] +pub struct ChangeItem { + /// Cursor indicating start of change + pub start: Cursor, + /// Cursor indicating end of change + pub end: Cursor, + /// Text to be inserted or deleted + pub text: String, + /// Insert if true, delete if false + pub insert: bool, +} + +impl ChangeItem { + // Reverse change item (in place) + pub fn reverse(&mut self) { + self.insert = !self.insert; + } +} + +/// A set of change items grouped into one logical change +#[derive(Clone, Debug, Default)] +pub struct Change { + /// Change items grouped into one change + pub items: Vec, +} + +impl Change { + // Reverse change (in place) + pub fn reverse(&mut self) { + self.items.reverse(); + for item in self.items.iter_mut() { + item.reverse(); + } + } +} + +/// Selection mode +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum Selection { + /// No selection + None, + /// Normal selection + Normal(Cursor), + /// Select by lines + Line(Cursor), + /// Select by words + Word(Cursor), + //TODO: Select block +} + +/// A trait to allow easy replacements of [`Editor`], like `SyntaxEditor` +pub trait Edit<'buffer> { + /// Mutably borrows `self` together with an [`FontSystem`] for more convenient methods + fn borrow_with<'font_system>( + &'font_system mut self, + font_system: &'font_system mut FontSystem, + ) -> BorrowedWithFontSystem<'font_system, Self> + where + Self: Sized, + { + BorrowedWithFontSystem { + inner: self, + font_system, + } + } + + /// Get the internal [`BufferRef`] + fn buffer_ref(&self) -> &BufferRef<'buffer>; + + /// Get the internal [`BufferRef`] + fn buffer_ref_mut(&mut self) -> &mut BufferRef<'buffer>; + + /// Get the internal [`Buffer`] + fn with_buffer T, T>(&self, f: F) -> T { + match self.buffer_ref() { + BufferRef::Owned(buffer) => f(buffer), + BufferRef::Borrowed(buffer) => f(buffer), + BufferRef::Arc(buffer) => f(buffer), + } + } + + /// Get the internal [`Buffer`], mutably + fn with_buffer_mut T, T>(&mut self, f: F) -> T { + match self.buffer_ref_mut() { + BufferRef::Owned(buffer) => f(buffer), + BufferRef::Borrowed(buffer) => f(buffer), + BufferRef::Arc(buffer) => f(Arc::make_mut(buffer)), + } + } + + /// Get the [`Buffer`] redraw flag + fn redraw(&self) -> bool { + self.with_buffer(|buffer| buffer.redraw()) + } + + /// Set the [`Buffer`] redraw flag + fn set_redraw(&mut self, redraw: bool) { + self.with_buffer_mut(|buffer| buffer.set_redraw(redraw)); + } + + /// Get the current cursor + fn cursor(&self) -> Cursor; + + /// Set the current cursor + fn set_cursor(&mut self, cursor: Cursor); + + /// Get the current selection position + fn selection(&self) -> Selection; + + /// Set the current selection position + fn set_selection(&mut self, selection: Selection); + + /// Get the bounds of the current selection + //TODO: will not work with Block select + fn selection_bounds(&self) -> Option<(Cursor, Cursor)> { + self.with_buffer(|buffer| { + let cursor = self.cursor(); + match self.selection() { + Selection::None => None, + Selection::Normal(select) => match select.line.cmp(&cursor.line) { + cmp::Ordering::Greater => Some((cursor, select)), + cmp::Ordering::Less => Some((select, cursor)), + cmp::Ordering::Equal => { + /* select.line == cursor.line */ + if select.index < cursor.index { + Some((select, cursor)) + } else { + /* select.index >= cursor.index */ + Some((cursor, select)) + } + } + }, + Selection::Line(select) => { + let start_line = cmp::min(select.line, cursor.line); + let end_line = cmp::max(select.line, cursor.line); + let end_index = buffer.lines[end_line].text().len(); + Some((Cursor::new(start_line, 0), Cursor::new(end_line, end_index))) + } + Selection::Word(select) => { + let (mut start, mut end) = match select.line.cmp(&cursor.line) { + cmp::Ordering::Greater => (cursor, select), + cmp::Ordering::Less => (select, cursor), + cmp::Ordering::Equal => { + /* select.line == cursor.line */ + if select.index < cursor.index { + (select, cursor) + } else { + /* select.index >= cursor.index */ + (cursor, select) + } + } + }; + + // Move start to beginning of word + { + let line = &buffer.lines[start.line]; + start.index = line + .text() + .unicode_word_indices() + .rev() + .map(|(i, _)| i) + .find(|&i| i < start.index) + .unwrap_or(0); + } + + // Move end to end of word + { + let line = &buffer.lines[end.line]; + end.index = line + .text() + .unicode_word_indices() + .map(|(i, word)| i + word.len()) + .find(|&i| i > end.index) + .unwrap_or(line.text().len()); + } + + Some((start, end)) + } + } + }) + } + + /// Get the current automatic indentation setting + fn auto_indent(&self) -> bool; + + /// Enable or disable automatic indentation + fn set_auto_indent(&mut self, auto_indent: bool); + + /// Get the current tab width + fn tab_width(&self) -> u16; + + /// Set the current tab width. A `tab_width` of 0 is not allowed, and will be ignored + fn set_tab_width(&mut self, font_system: &mut FontSystem, tab_width: u16); + + /// Shape lines until scroll, after adjusting scroll if the cursor moved + fn shape_as_needed(&mut self, font_system: &mut FontSystem, prune: bool); + + /// Delete text starting at start Cursor and ending at end Cursor + fn delete_range(&mut self, start: Cursor, end: Cursor); + + /// Insert text at specified cursor with specified `attrs_list` + fn insert_at(&mut self, cursor: Cursor, data: &str, attrs_list: Option) -> Cursor; + + /// Copy selection + fn copy_selection(&self) -> Option; + + /// Delete selection, adjusting cursor and returning true if there was a selection + // Also used by backspace, delete, insert, and enter when there is a selection + fn delete_selection(&mut self) -> bool; + + /// Insert a string at the current cursor or replacing the current selection with the given + /// attributes, or with the previous character's attributes if None is given. + fn insert_string(&mut self, data: &str, attrs_list: Option) { + self.delete_selection(); + let new_cursor = self.insert_at(self.cursor(), data, attrs_list); + self.set_cursor(new_cursor); + } + + /// Apply a change + fn apply_change(&mut self, change: &Change) -> bool; + + /// Start collecting change + fn start_change(&mut self); + + /// Get completed change + fn finish_change(&mut self) -> Option; + + /// Perform an [Action] on the editor + fn action(&mut self, font_system: &mut FontSystem, action: Action); + + /// Get X and Y position of the top left corner of the cursor + fn cursor_position(&self) -> Option<(i32, i32)>; +} + +impl<'buffer, E: Edit<'buffer>> BorrowedWithFontSystem<'_, E> { + /// Get the internal [`Buffer`], mutably + pub fn with_buffer_mut) -> T, T>( + &mut self, + f: F, + ) -> T { + self.inner.with_buffer_mut(|buffer| { + let mut borrowed = BorrowedWithFontSystem { + inner: buffer, + font_system: self.font_system, + }; + f(&mut borrowed) + }) + } + + /// Set the current tab width. A `tab_width` of 0 is not allowed, and will be ignored + pub fn set_tab_width(&mut self, tab_width: u16) { + self.inner.set_tab_width(self.font_system, tab_width); + } + + /// Shape lines until scroll, after adjusting scroll if the cursor moved + pub fn shape_as_needed(&mut self, prune: bool) { + self.inner.shape_as_needed(self.font_system, prune); + } + + /// Perform an [Action] on the editor + pub fn action(&mut self, action: Action) { + self.inner.action(self.font_system, action); + } +} diff --git a/vendor/cosmic-text/src/edit/syntect.rs b/vendor/cosmic-text/src/edit/syntect.rs new file mode 100644 index 0000000..57eb9c7 --- /dev/null +++ b/vendor/cosmic-text/src/edit/syntect.rs @@ -0,0 +1,463 @@ +#[cfg(not(feature = "std"))] +use alloc::{string::String, vec::Vec}; +#[cfg(feature = "std")] +use std::{fs, io, path::Path}; +use syntect::highlighting::{ + FontStyle, HighlightState, Highlighter, RangedHighlightIterator, ThemeSet, +}; +use syntect::parsing::{ParseState, ScopeStack, SyntaxReference, SyntaxSet}; + +use crate::{ + Action, AttrsList, BorrowedWithFontSystem, BufferRef, Change, Color, Cursor, Edit, Editor, + FontSystem, Selection, Shaping, Style, Weight, +}; + +pub use syntect::highlighting::Theme as SyntaxTheme; + +#[derive(Debug)] +pub struct SyntaxSystem { + pub syntax_set: SyntaxSet, + pub theme_set: ThemeSet, +} + +impl SyntaxSystem { + /// Create a new [`SyntaxSystem`] + pub fn new() -> Self { + Self { + //TODO: store newlines in buffer + syntax_set: SyntaxSet::load_defaults_nonewlines(), + theme_set: ThemeSet::load_defaults(), + } + } +} + +/// A wrapper of [`Editor`] with syntax highlighting provided by [`SyntaxSystem`] +#[derive(Debug)] +pub struct SyntaxEditor<'syntax_system, 'buffer> { + editor: Editor<'buffer>, + syntax_system: &'syntax_system SyntaxSystem, + syntax: &'syntax_system SyntaxReference, + theme: &'syntax_system SyntaxTheme, + highlighter: Highlighter<'syntax_system>, + syntax_cache: Vec<(ParseState, ScopeStack)>, +} + +impl<'syntax_system, 'buffer> SyntaxEditor<'syntax_system, 'buffer> { + /// Create a new [`SyntaxEditor`] with the provided [`Buffer`], [`SyntaxSystem`], and theme name. + /// + /// A good default theme name is "base16-eighties.dark". + /// + /// Returns None if theme not found + pub fn new( + buffer: impl Into>, + syntax_system: &'syntax_system SyntaxSystem, + theme_name: &str, + ) -> Option { + let editor = Editor::new(buffer); + let syntax = syntax_system.syntax_set.find_syntax_plain_text(); + let theme = syntax_system.theme_set.themes.get(theme_name)?; + let highlighter = Highlighter::new(theme); + + Some(Self { + editor, + syntax_system, + syntax, + theme, + highlighter, + syntax_cache: Vec::new(), + }) + } + + /// Modifies the theme of the [`SyntaxEditor`], returning false if the theme is missing + pub fn update_theme(&mut self, theme_name: &str) -> bool { + if let Some(theme) = self.syntax_system.theme_set.themes.get(theme_name) { + if self.theme != theme { + self.theme = theme; + self.highlighter = Highlighter::new(theme); + self.syntax_cache.clear(); + + // Reset attrs to match default foreground and no highlighting + self.with_buffer_mut(|buffer| { + for line in buffer.lines.iter_mut() { + let mut attrs = line.attrs_list().defaults(); + if let Some(foreground) = self.theme.settings.foreground { + attrs = attrs.color(Color::rgba( + foreground.r, + foreground.g, + foreground.b, + foreground.a, + )); + } + line.set_attrs_list(AttrsList::new(&attrs)); + } + }); + } + + true + } else { + false + } + } + + /// Load text from a file, and also set syntax to the best option + /// + /// ## Errors + /// + /// Returns an [`io::Error`] if reading the file fails + #[cfg(feature = "std")] + pub fn load_text>( + &mut self, + font_system: &mut FontSystem, + path: P, + mut attrs: crate::Attrs, + ) -> io::Result<()> { + let path = path.as_ref(); + + // Set attrs to match default foreground + if let Some(foreground) = self.theme.settings.foreground { + attrs = attrs.color(Color::rgba( + foreground.r, + foreground.g, + foreground.b, + foreground.a, + )); + } + + let text = fs::read_to_string(path)?; + self.editor.with_buffer_mut(|buffer| { + buffer.set_text(font_system, &text, &attrs, Shaping::Advanced); + }); + + //TODO: re-use text + self.syntax = match self.syntax_system.syntax_set.find_syntax_for_file(path) { + Ok(Some(some)) => some, + Ok(None) => { + log::warn!("no syntax found for {:?}", path); + self.syntax_system.syntax_set.find_syntax_plain_text() + } + Err(err) => { + log::warn!("failed to determine syntax for {:?}: {:?}", path, err); + self.syntax_system.syntax_set.find_syntax_plain_text() + } + }; + + // Clear syntax cache + self.syntax_cache.clear(); + + Ok(()) + } + + /// Set syntax highlighting by file extension + pub fn syntax_by_extension(&mut self, extension: &str) { + self.syntax = match self + .syntax_system + .syntax_set + .find_syntax_by_extension(extension) + { + Some(some) => some, + None => { + log::warn!("no syntax found for {}", extension); + self.syntax_system.syntax_set.find_syntax_plain_text() + } + }; + + self.syntax_cache.clear(); + } + + /// Get the default background color + pub fn background_color(&self) -> Color { + if let Some(background) = self.theme.settings.background { + Color::rgba(background.r, background.g, background.b, background.a) + } else { + Color::rgb(0, 0, 0) + } + } + + /// Get the default foreground (text) color + pub fn foreground_color(&self) -> Color { + if let Some(foreground) = self.theme.settings.foreground { + Color::rgba(foreground.r, foreground.g, foreground.b, foreground.a) + } else { + Color::rgb(0xFF, 0xFF, 0xFF) + } + } + + /// Get the default cursor color + pub fn cursor_color(&self) -> Color { + if let Some(some) = self.theme.settings.caret { + Color::rgba(some.r, some.g, some.b, some.a) + } else { + self.foreground_color() + } + } + + /// Get the default selection color + pub fn selection_color(&self) -> Color { + if let Some(some) = self.theme.settings.selection { + Color::rgba(some.r, some.g, some.b, some.a) + } else { + let foreground_color = self.foreground_color(); + Color::rgba( + foreground_color.r(), + foreground_color.g(), + foreground_color.b(), + 0x33, + ) + } + } + + /// Get the current syntect theme + pub fn theme(&self) -> &SyntaxTheme { + self.theme + } + + /// Draw the editor + #[cfg(feature = "swash")] + pub fn draw(&self, font_system: &mut FontSystem, cache: &mut crate::SwashCache, mut f: F) + where + F: FnMut(i32, i32, u32, u32, Color), + { + let size = self.with_buffer(|buffer| buffer.size()); + if let Some(width) = size.0 { + if let Some(height) = size.1 { + f(0, 0, width as u32, height as u32, self.background_color()); + } + } + self.editor.draw( + font_system, + cache, + self.foreground_color(), + self.cursor_color(), + self.selection_color(), + self.foreground_color(), + f, + ); + } +} + +impl<'buffer> Edit<'buffer> for SyntaxEditor<'_, 'buffer> { + fn buffer_ref(&self) -> &BufferRef<'buffer> { + self.editor.buffer_ref() + } + + fn buffer_ref_mut(&mut self) -> &mut BufferRef<'buffer> { + self.editor.buffer_ref_mut() + } + + fn cursor(&self) -> Cursor { + self.editor.cursor() + } + + fn set_cursor(&mut self, cursor: Cursor) { + self.editor.set_cursor(cursor); + } + + fn selection(&self) -> Selection { + self.editor.selection() + } + + fn set_selection(&mut self, selection: Selection) { + self.editor.set_selection(selection); + } + + fn auto_indent(&self) -> bool { + self.editor.auto_indent() + } + + fn set_auto_indent(&mut self, auto_indent: bool) { + self.editor.set_auto_indent(auto_indent); + } + + fn tab_width(&self) -> u16 { + self.editor.tab_width() + } + + fn set_tab_width(&mut self, font_system: &mut FontSystem, tab_width: u16) { + self.editor.set_tab_width(font_system, tab_width); + } + + fn shape_as_needed(&mut self, font_system: &mut FontSystem, prune: bool) { + #[cfg(feature = "std")] + let now = std::time::Instant::now(); + + let cursor = self.cursor(); + self.editor.with_buffer_mut(|buffer| { + let metrics = buffer.metrics(); + let scroll = buffer.scroll(); + let scroll_end = scroll.vertical + buffer.size().1.unwrap_or(f32::INFINITY); + let mut total_height = 0.0; + let mut highlighted = 0; + for line_i in 0..buffer.lines.len() { + // Break out if we have reached the end of scroll and are past the cursor + if total_height > scroll_end && line_i > cursor.line { + break; + } + + let line = &mut buffer.lines[line_i]; + if line.metadata().is_some() && line_i < self.syntax_cache.len() { + //TODO: duplicated code! + if line_i >= scroll.line && total_height < scroll_end { + // Perform shaping and layout of this line in order to count if we have reached scroll + match buffer.line_layout(font_system, line_i) { + Some(layout_lines) => { + for layout_line in layout_lines.iter() { + total_height += + layout_line.line_height_opt.unwrap_or(metrics.line_height); + } + } + None => { + //TODO: should this be possible? + } + } + } + continue; + } + highlighted += 1; + + let (mut parse_state, scope_stack) = + if line_i > 0 && line_i <= self.syntax_cache.len() { + self.syntax_cache[line_i - 1].clone() + } else { + (ParseState::new(self.syntax), ScopeStack::new()) + }; + let mut highlight_state = HighlightState::new(&self.highlighter, scope_stack); + let ops = parse_state + .parse_line(line.text(), &self.syntax_system.syntax_set) + .expect("failed to parse syntax"); + let ranges = RangedHighlightIterator::new( + &mut highlight_state, + &ops, + line.text(), + &self.highlighter, + ); + + let attrs = line.attrs_list().defaults(); + let mut attrs_list = AttrsList::new(&attrs); + let original_attrs = attrs.clone(); // Store a clone for comparison + for (style, _, range) in ranges { + let span_attrs = attrs + .clone() // Clone attrs for modification + .color(Color::rgba( + style.foreground.r, + style.foreground.g, + style.foreground.b, + style.foreground.a, + )) + //TODO: background + .style(if style.font_style.contains(FontStyle::ITALIC) { + Style::Italic + } else { + Style::Normal + }) + .weight(if style.font_style.contains(FontStyle::BOLD) { + Weight::BOLD + } else { + Weight::NORMAL + }); //TODO: underline + if span_attrs != original_attrs { + attrs_list.add_span(range, &span_attrs); + } + } + + // Update line attributes. This operation only resets if the line changes + line.set_attrs_list(attrs_list); + + // Perform shaping and layout of this line in order to count if we have reached scroll + if line_i >= scroll.line && total_height < scroll_end { + match buffer.line_layout(font_system, line_i) { + Some(layout_lines) => { + for layout_line in layout_lines.iter() { + total_height += + layout_line.line_height_opt.unwrap_or(metrics.line_height); + } + } + None => { + //TODO: should this be possible? + } + } + } + + let cache_item = (parse_state.clone(), highlight_state.path.clone()); + if line_i < self.syntax_cache.len() { + if self.syntax_cache[line_i] != cache_item { + self.syntax_cache[line_i] = cache_item; + if line_i + 1 < buffer.lines.len() { + buffer.lines[line_i + 1].reset(); + } + } + } else { + buffer.lines[line_i].set_metadata(self.syntax_cache.len()); + self.syntax_cache.push(cache_item); + } + } + + if highlighted > 0 { + buffer.set_redraw(true); + #[cfg(feature = "std")] + log::debug!( + "Syntax highlighted {} lines in {:?}", + highlighted, + now.elapsed() + ); + } + }); + + self.editor.shape_as_needed(font_system, prune); + } + + fn delete_range(&mut self, start: Cursor, end: Cursor) { + self.editor.delete_range(start, end); + } + + fn insert_at(&mut self, cursor: Cursor, data: &str, attrs_list: Option) -> Cursor { + self.editor.insert_at(cursor, data, attrs_list) + } + + fn copy_selection(&self) -> Option { + self.editor.copy_selection() + } + + fn delete_selection(&mut self) -> bool { + self.editor.delete_selection() + } + + fn apply_change(&mut self, change: &Change) -> bool { + self.editor.apply_change(change) + } + + fn start_change(&mut self) { + self.editor.start_change(); + } + + fn finish_change(&mut self) -> Option { + self.editor.finish_change() + } + + fn action(&mut self, font_system: &mut FontSystem, action: Action) { + self.editor.action(font_system, action); + } + + fn cursor_position(&self) -> Option<(i32, i32)> { + self.editor.cursor_position() + } +} + +impl BorrowedWithFontSystem<'_, SyntaxEditor<'_, '_>> { + /// Load text from a file, and also set syntax to the best option + /// + /// ## Errors + /// + /// Returns an [`io::Error`] if reading the file fails + #[cfg(feature = "std")] + pub fn load_text>(&mut self, path: P, attrs: crate::Attrs) -> io::Result<()> { + self.inner.load_text(self.font_system, path, attrs) + } + + #[cfg(feature = "swash")] + pub fn draw(&mut self, cache: &mut crate::SwashCache, f: F) + where + F: FnMut(i32, i32, u32, u32, Color), + { + self.inner.draw(self.font_system, cache, f); + } +} diff --git a/vendor/cosmic-text/src/edit/vi.rs b/vendor/cosmic-text/src/edit/vi.rs new file mode 100644 index 0000000..0719e7b --- /dev/null +++ b/vendor/cosmic-text/src/edit/vi.rs @@ -0,0 +1,1173 @@ +use alloc::{collections::BTreeMap, string::String}; +use core::cmp; +use modit::{Event, Key, Parser, TextObject, WordIter}; +use unicode_segmentation::UnicodeSegmentation; + +use crate::{ + Action, AttrsList, BorrowedWithFontSystem, BufferRef, Change, Color, Cursor, Edit, FontSystem, + Motion, Selection, SyntaxEditor, SyntaxTheme, +}; + +pub use modit::{ViMode, ViParser}; + +fn undo_2_action<'buffer, E: Edit<'buffer>>( + editor: &mut E, + action: cosmic_undo_2::Action<&Change>, +) { + match action { + cosmic_undo_2::Action::Do(change) => { + editor.apply_change(change); + } + cosmic_undo_2::Action::Undo(change) => { + //TODO: make this more efficient + let mut reversed = change.clone(); + reversed.reverse(); + editor.apply_change(&reversed); + } + } +} + +fn finish_change<'buffer, E: Edit<'buffer>>( + editor: &mut E, + commands: &mut cosmic_undo_2::Commands, + changed: &mut bool, + pivot: Option, +) -> Option { + //TODO: join changes together + match editor.finish_change() { + Some(change) => { + if !change.items.is_empty() { + commands.push(change.clone()); + *changed = eval_changed(commands, pivot); + } + Some(change) + } + None => None, + } +} + +/// Evaluate if an [`ViEditor`] changed based on its last saved state. +fn eval_changed(commands: &cosmic_undo_2::Commands, pivot: Option) -> bool { + // Editors are considered modified if the current change index is unequal to the last + // saved index or if `pivot` is None. + // The latter case handles a never saved editor with a current command index of None. + // Check the unit tests for an example. + match (commands.current_command_index(), pivot) { + (Some(current), Some(pivot)) => current != pivot, + // Edge case for an editor with neither a save point nor any changes. + // This could be a new editor or an editor without a save point where undo() is called + // until the editor is fresh. + (None, None) => false, + // Default to true because it's safer to assume a buffer has been modified so as to not + // lose changes + _ => true, + } +} + +fn search<'buffer, E: Edit<'buffer>>(editor: &mut E, value: &str, forwards: bool) -> bool { + let mut cursor = editor.cursor(); + let start_line = cursor.line; + if forwards { + while cursor.line < editor.with_buffer(|buffer| buffer.lines.len()) { + if let Some(index) = editor.with_buffer(|buffer| { + buffer.lines[cursor.line] + .text() + .match_indices(value) + .filter_map(|(i, _)| { + if cursor.line != start_line || i > cursor.index { + Some(i) + } else { + None + } + }) + .next() + }) { + cursor.index = index; + editor.set_cursor(cursor); + return true; + } + + cursor.line += 1; + } + } else { + cursor.line += 1; + while cursor.line > 0 { + cursor.line -= 1; + + if let Some(index) = editor.with_buffer(|buffer| { + buffer.lines[cursor.line] + .text() + .rmatch_indices(value) + .filter_map(|(i, _)| { + if cursor.line != start_line || i < cursor.index { + Some(i) + } else { + None + } + }) + .next() + }) { + cursor.index = index; + editor.set_cursor(cursor); + return true; + } + } + } + false +} + +fn select_in<'buffer, E: Edit<'buffer>>(editor: &mut E, start_c: char, end_c: char, include: bool) { + // Find the largest encompasing object, or if there is none, find the next one. + let cursor = editor.cursor(); + let (start, end) = editor.with_buffer(|buffer| { + // Search forwards for isolated end character, counting start and end characters found + let mut end = cursor; + let mut starts = 0; + let mut ends = 0; + 'find_end: loop { + let line = &buffer.lines[end.line]; + let text = line.text(); + for (i, c) in text[end.index..].char_indices() { + if c == end_c { + ends += 1; + } else if c == start_c { + starts += 1; + } + if ends > starts { + end.index += if include { i + c.len_utf8() } else { i }; + break 'find_end; + } + } + if end.line + 1 < buffer.lines.len() { + end.line += 1; + end.index = 0; + } else { + break 'find_end; + } + } + + // Search backwards to resolve starts and ends + let mut start = cursor; + 'find_start: loop { + let line = &buffer.lines[start.line]; + let text = line.text(); + for (i, c) in text[..start.index].char_indices().rev() { + if c == start_c { + starts += 1; + } else if c == end_c { + ends += 1; + } + if starts >= ends { + start.index = if include { i } else { i + c.len_utf8() }; + break 'find_start; + } + } + if start.line > 0 { + start.line -= 1; + start.index = buffer.lines[start.line].text().len(); + } else { + break 'find_start; + } + } + + (start, end) + }); + + editor.set_selection(Selection::Normal(start)); + editor.set_cursor(end); +} + +#[derive(Debug)] +pub struct ViEditor<'syntax_system, 'buffer> { + editor: SyntaxEditor<'syntax_system, 'buffer>, + parser: ViParser, + passthrough: bool, + registers: BTreeMap, + search_opt: Option<(String, bool)>, + commands: cosmic_undo_2::Commands, + changed: bool, + save_pivot: Option, +} + +impl<'syntax_system, 'buffer> ViEditor<'syntax_system, 'buffer> { + pub fn new(editor: SyntaxEditor<'syntax_system, 'buffer>) -> Self { + Self { + editor, + parser: ViParser::new(), + passthrough: false, + registers: BTreeMap::new(), + search_opt: None, + commands: cosmic_undo_2::Commands::new(), + changed: false, + save_pivot: None, + } + } + + /// Modifies the theme of the [`SyntaxEditor`], returning false if the theme is missing + pub fn update_theme(&mut self, theme_name: &str) -> bool { + self.editor.update_theme(theme_name) + } + + /// Load text from a file, and also set syntax to the best option + /// + /// ## Errors + /// Returns an `io::Error` if reading the file fails + #[cfg(feature = "std")] + pub fn load_text>( + &mut self, + font_system: &mut FontSystem, + path: P, + attrs: crate::Attrs, + ) -> std::io::Result<()> { + self.editor.load_text(font_system, path, attrs) + } + + /// Get the default background color + pub fn background_color(&self) -> Color { + self.editor.background_color() + } + + /// Get the default foreground (text) color + pub fn foreground_color(&self) -> Color { + self.editor.foreground_color() + } + + /// Get the default cursor color + pub fn cursor_color(&self) -> Color { + self.editor.cursor_color() + } + + /// Get the default selection color + pub fn selection_color(&self) -> Color { + self.editor.selection_color() + } + + /// Get the current syntect theme + pub fn theme(&self) -> &SyntaxTheme { + self.editor.theme() + } + + /// Get changed flag + pub fn changed(&self) -> bool { + self.changed + } + + /// Set changed flag + pub fn set_changed(&mut self, changed: bool) { + self.changed = changed; + } + + /// Set current change as the save (or pivot) point. + /// + /// A pivot point is the last saved index. Anything before or after the pivot indicates that + /// the editor has been changed or is unsaved. + /// + /// Undoing changes down to the pivot point sets the editor as unchanged. + /// Redoing changes up to the pivot point sets the editor as unchanged. + /// + /// Undoing or redoing changes beyond the pivot point sets the editor to changed. + pub fn save_point(&mut self) { + self.save_pivot = Some(self.commands.current_command_index().unwrap_or_default()); + self.changed = false; + } + + /// Set passthrough mode (true will turn off vi features) + pub fn set_passthrough(&mut self, passthrough: bool) { + if passthrough != self.passthrough { + self.passthrough = passthrough; + self.with_buffer_mut(|buffer| buffer.set_redraw(true)); + } + } + + /// Get current vi parser + pub fn parser(&self) -> &ViParser { + &self.parser + } + + /// Redo a change + pub fn redo(&mut self) { + log::debug!("Redo"); + for action in self.commands.redo() { + undo_2_action(&mut self.editor, action); + } + self.changed = eval_changed(&self.commands, self.save_pivot); + } + + /// Undo a change + pub fn undo(&mut self) { + log::debug!("Undo"); + for action in self.commands.undo() { + undo_2_action(&mut self.editor, action); + } + self.changed = eval_changed(&self.commands, self.save_pivot); + } + + #[cfg(feature = "swash")] + pub fn draw(&self, font_system: &mut FontSystem, cache: &mut crate::SwashCache, mut f: F) + where + F: FnMut(i32, i32, u32, u32, Color), + { + let background_color = self.background_color(); + let foreground_color = self.foreground_color(); + let cursor_color = self.cursor_color(); + let selection_color = self.selection_color(); + self.with_buffer(|buffer| { + let size = buffer.size(); + if let Some(width) = size.0 { + if let Some(height) = size.1 { + f(0, 0, width as u32, height as u32, background_color); + } + } + let font_size = buffer.metrics().font_size; + for run in buffer.layout_runs() { + let line_i = run.line_i; + let line_y = run.line_y; + let line_top = run.line_top; + let line_height = run.line_height; + + let cursor_glyph_opt = |cursor: &Cursor| -> Option<(usize, f32, f32)> { + //TODO: better calculation of width + let default_width = font_size / 2.0; + if cursor.line == line_i { + for (glyph_i, glyph) in run.glyphs.iter().enumerate() { + if cursor.index >= glyph.start && cursor.index < glyph.end { + // Guess x offset based on characters + let mut before = 0; + let mut total = 0; + + let cluster = &run.text[glyph.start..glyph.end]; + for (i, _) in cluster.grapheme_indices(true) { + if glyph.start + i < cursor.index { + before += 1; + } + total += 1; + } + + let width = glyph.w / (total as f32); + let offset = (before as f32) * width; + return Some((glyph_i, offset, width)); + } + } + match run.glyphs.last() { + Some(glyph) => { + if cursor.index == glyph.end { + return Some((run.glyphs.len(), 0.0, default_width)); + } + } + None => { + return Some((0, 0.0, default_width)); + } + } + } + None + }; + + // Highlight selection + if let Some((start, end)) = self.selection_bounds() { + if line_i >= start.line && line_i <= end.line { + let mut range_opt = None; + for glyph in run.glyphs.iter() { + // Guess x offset based on characters + let cluster = &run.text[glyph.start..glyph.end]; + let total = cluster.grapheme_indices(true).count(); + let mut c_x = glyph.x; + let c_w = glyph.w / total as f32; + for (i, c) in cluster.grapheme_indices(true) { + let c_start = glyph.start + i; + let c_end = glyph.start + i + c.len(); + if (start.line != line_i || c_end > start.index) + && (end.line != line_i || c_start < end.index) + { + range_opt = match range_opt.take() { + Some((min, max)) => Some(( + cmp::min(min, c_x as i32), + cmp::max(max, (c_x + c_w) as i32), + )), + None => Some((c_x as i32, (c_x + c_w) as i32)), + }; + } else if let Some((min, max)) = range_opt.take() { + f( + min, + line_top as i32, + cmp::max(0, max - min) as u32, + line_height as u32, + selection_color, + ); + } + c_x += c_w; + } + } + + if run.glyphs.is_empty() && end.line > line_i { + // Highlight all of internal empty lines + range_opt = Some((0, buffer.size().0.unwrap_or(0.0) as i32)); + } + + if let Some((mut min, mut max)) = range_opt.take() { + if end.line > line_i { + // Draw to end of line + if run.rtl { + min = 0; + } else { + max = buffer.size().0.unwrap_or(0.0) as i32; + } + } + f( + min, + line_top as i32, + cmp::max(0, max - min) as u32, + line_height as u32, + selection_color, + ); + } + } + } + + // Draw cursor + if let Some((cursor_glyph, cursor_glyph_offset, cursor_glyph_width)) = + cursor_glyph_opt(&self.cursor()) + { + let block_cursor = if self.passthrough { + false + } else { + match self.parser.mode { + ViMode::Insert | ViMode::Replace => false, + _ => true, /*TODO: determine block cursor in other modes*/ + } + }; + + let (start_x, end_x) = match run.glyphs.get(cursor_glyph) { + Some(glyph) => { + // Start of detected glyph + if glyph.level.is_rtl() { + ( + (glyph.x + glyph.w - cursor_glyph_offset) as i32, + (glyph.x + glyph.w - cursor_glyph_offset - cursor_glyph_width) + as i32, + ) + } else { + ( + (glyph.x + cursor_glyph_offset) as i32, + (glyph.x + cursor_glyph_offset + cursor_glyph_width) as i32, + ) + } + } + None => match run.glyphs.last() { + Some(glyph) => { + // End of last glyph + if glyph.level.is_rtl() { + (glyph.x as i32, (glyph.x - cursor_glyph_width) as i32) + } else { + ( + (glyph.x + glyph.w) as i32, + (glyph.x + glyph.w + cursor_glyph_width) as i32, + ) + } + } + None => { + // Start of empty line + (0, cursor_glyph_width as i32) + } + }, + }; + + if block_cursor { + let left_x = cmp::min(start_x, end_x); + let right_x = cmp::max(start_x, end_x); + f( + left_x, + line_top as i32, + (right_x - left_x) as u32, + line_height as u32, + selection_color, + ); + } else { + f( + start_x, + line_top as i32, + 1, + line_height as u32, + cursor_color, + ); + } + } + + for glyph in run.glyphs.iter() { + let physical_glyph = glyph.physical((0., 0.), 1.0); + + let glyph_color = match glyph.color_opt { + Some(some) => some, + None => foreground_color, + }; + + cache.with_pixels( + font_system, + physical_glyph.cache_key, + glyph_color, + |x, y, color| { + f( + physical_glyph.x + x, + line_y as i32 + physical_glyph.y + y, + 1, + 1, + color, + ); + }, + ); + } + } + }); + } +} + +impl<'buffer> Edit<'buffer> for ViEditor<'_, 'buffer> { + fn buffer_ref(&self) -> &BufferRef<'buffer> { + self.editor.buffer_ref() + } + + fn buffer_ref_mut(&mut self) -> &mut BufferRef<'buffer> { + self.editor.buffer_ref_mut() + } + + fn cursor(&self) -> Cursor { + self.editor.cursor() + } + + fn set_cursor(&mut self, cursor: Cursor) { + self.editor.set_cursor(cursor); + } + + fn selection(&self) -> Selection { + self.editor.selection() + } + + fn set_selection(&mut self, selection: Selection) { + self.editor.set_selection(selection); + } + + fn auto_indent(&self) -> bool { + self.editor.auto_indent() + } + + fn set_auto_indent(&mut self, auto_indent: bool) { + self.editor.set_auto_indent(auto_indent); + } + + fn tab_width(&self) -> u16 { + self.editor.tab_width() + } + + fn set_tab_width(&mut self, font_system: &mut FontSystem, tab_width: u16) { + self.editor.set_tab_width(font_system, tab_width); + } + + fn shape_as_needed(&mut self, font_system: &mut FontSystem, prune: bool) { + self.editor.shape_as_needed(font_system, prune); + } + + fn delete_range(&mut self, start: Cursor, end: Cursor) { + self.editor.delete_range(start, end); + } + + fn insert_at(&mut self, cursor: Cursor, data: &str, attrs_list: Option) -> Cursor { + self.editor.insert_at(cursor, data, attrs_list) + } + + fn copy_selection(&self) -> Option { + self.editor.copy_selection() + } + + fn delete_selection(&mut self) -> bool { + self.editor.delete_selection() + } + + fn apply_change(&mut self, change: &Change) -> bool { + self.editor.apply_change(change) + } + + fn start_change(&mut self) { + self.editor.start_change(); + } + + fn finish_change(&mut self) -> Option { + finish_change( + &mut self.editor, + &mut self.commands, + &mut self.changed, + self.save_pivot, + ) + } + + fn action(&mut self, font_system: &mut FontSystem, action: Action) { + log::debug!("Action {:?}", action); + + let editor = &mut self.editor; + + // Ensure a change is always started + editor.start_change(); + + if self.passthrough { + editor.action(font_system, action); + // Always finish change when passing through (TODO: group changes) + finish_change( + editor, + &mut self.commands, + &mut self.changed, + self.save_pivot, + ); + return; + } + + let key = match action { + //TODO: this leaves lots of room for issues in translation, should we directly accept Key? + Action::Backspace => Key::Backspace, + Action::Delete => Key::Delete, + Action::Motion(Motion::Down) => Key::Down, + Action::Motion(Motion::End) => Key::End, + Action::Enter => Key::Enter, + Action::Escape => Key::Escape, + Action::Motion(Motion::Home) => Key::Home, + Action::Indent => Key::Tab, + Action::Insert(c) => Key::Char(c), + Action::Motion(Motion::Left) => Key::Left, + Action::Motion(Motion::PageDown) => Key::PageDown, + Action::Motion(Motion::PageUp) => Key::PageUp, + Action::Motion(Motion::Right) => Key::Right, + Action::Unindent => Key::Backtab, + Action::Motion(Motion::Up) => Key::Up, + _ => { + log::debug!("Pass through action {:?}", action); + editor.action(font_system, action); + // Always finish change when passing through (TODO: group changes) + finish_change( + editor, + &mut self.commands, + &mut self.changed, + self.save_pivot, + ); + return; + } + }; + + let has_selection = !matches!(editor.selection(), Selection::None); + + self.parser.parse(key, has_selection, |event| { + log::debug!(" Event {:?}", event); + let action = match event { + Event::AutoIndent => { + log::info!("TODO: AutoIndent"); + return; + } + Event::Backspace => Action::Backspace, + Event::BackspaceInLine => { + let cursor = editor.cursor(); + if cursor.index > 0 { + Action::Backspace + } else { + return; + } + } + Event::ChangeStart => { + editor.start_change(); + return; + } + Event::ChangeFinish => { + finish_change( + editor, + &mut self.commands, + &mut self.changed, + self.save_pivot, + ); + return; + } + Event::Delete => Action::Delete, + Event::DeleteInLine => { + let cursor = editor.cursor(); + if cursor.index + < editor.with_buffer(|buffer| buffer.lines[cursor.line].text().len()) + { + Action::Delete + } else { + return; + } + } + Event::Escape => Action::Escape, + Event::Insert(c) => Action::Insert(c), + Event::NewLine => Action::Enter, + Event::Put { register, after } => { + if let Some((selection, data)) = self.registers.get(®ister) { + editor.start_change(); + if editor.delete_selection() { + editor.insert_string(data, None); + } else { + match selection { + Selection::None | Selection::Normal(_) | Selection::Word(_) => { + let mut cursor = editor.cursor(); + if after { + editor.with_buffer(|buffer| { + let text = buffer.lines[cursor.line].text(); + if let Some(c) = text[cursor.index..].chars().next() { + cursor.index += c.len_utf8(); + } + }); + editor.set_cursor(cursor); + } + editor.insert_at(cursor, data, None); + } + Selection::Line(_) => { + let mut cursor = editor.cursor(); + if after { + // Insert at next line + cursor.line += 1; + } else { + // Previous line will be moved down, so set cursor to next line + cursor.line += 1; + editor.set_cursor(cursor); + cursor.line -= 1; + } + // Insert at start of line + cursor.index = 0; + + // Insert text + editor.insert_at(cursor, "\n", None); + editor.insert_at(cursor, data, None); + + //TODO: Hack to allow immediate up/down + editor.shape_as_needed(font_system, false); + + // Move to inserted line, preserving cursor x position + if after { + editor.action(font_system, Action::Motion(Motion::Down)); + } else { + editor.action(font_system, Action::Motion(Motion::Up)); + } + } + } + } + finish_change( + editor, + &mut self.commands, + &mut self.changed, + self.save_pivot, + ); + } + return; + } + Event::Redraw => { + editor.with_buffer_mut(|buffer| buffer.set_redraw(true)); + return; + } + Event::SelectClear => { + editor.set_selection(Selection::None); + return; + } + Event::SelectStart => { + let cursor = editor.cursor(); + editor.set_selection(Selection::Normal(cursor)); + return; + } + Event::SelectLineStart => { + let cursor = editor.cursor(); + editor.set_selection(Selection::Line(cursor)); + return; + } + Event::SelectTextObject(text_object, include) => { + match text_object { + TextObject::AngleBrackets => select_in(editor, '<', '>', include), + TextObject::CurlyBrackets => select_in(editor, '{', '}', include), + TextObject::DoubleQuotes => select_in(editor, '"', '"', include), + TextObject::Parentheses => select_in(editor, '(', ')', include), + TextObject::Search { forwards } => { + if let Some((value, _)) = &self.search_opt { + if search(editor, value, forwards) { + let mut cursor = editor.cursor(); + editor.set_selection(Selection::Normal(cursor)); + //TODO: traverse lines if necessary + cursor.index += value.len(); + editor.set_cursor(cursor); + } + } + } + TextObject::SingleQuotes => select_in(editor, '\'', '\'', include), + TextObject::SquareBrackets => select_in(editor, '[', ']', include), + TextObject::Ticks => select_in(editor, '`', '`', include), + TextObject::Word(word) => { + let mut cursor = editor.cursor(); + let mut selection = editor.selection(); + editor.with_buffer(|buffer| { + let text = buffer.lines[cursor.line].text(); + match WordIter::new(text, word) + .find(|&(i, w)| i <= cursor.index && i + w.len() > cursor.index) + { + Some((i, w)) => { + cursor.index = i; + selection = Selection::Normal(cursor); + cursor.index += w.len(); + } + None => { + //TODO + } + } + }); + editor.set_selection(selection); + editor.set_cursor(cursor); + } + _ => { + log::info!("TODO: {:?}", text_object); + } + } + return; + } + Event::SetSearch(value, forwards) => { + self.search_opt = Some((value, forwards)); + return; + } + Event::ShiftLeft => Action::Unindent, + Event::ShiftRight => Action::Indent, + Event::SwapCase => { + log::info!("TODO: SwapCase"); + return; + } + Event::Undo => { + for action in self.commands.undo() { + undo_2_action(editor, action); + } + return; + } + Event::Yank { register } => { + if let Some(data) = editor.copy_selection() { + self.registers.insert(register, (editor.selection(), data)); + } + return; + } + Event::Motion(motion) => { + match motion { + modit::Motion::Around => { + //TODO: what to do for this psuedo-motion? + return; + } + modit::Motion::Down => Action::Motion(Motion::Down), + modit::Motion::End => Action::Motion(Motion::End), + modit::Motion::GotoLine(line) => { + Action::Motion(Motion::GotoLine(line.saturating_sub(1))) + } + modit::Motion::GotoEof => Action::Motion(Motion::GotoLine( + editor.with_buffer(|buffer| buffer.lines.len().saturating_sub(1)), + )), + modit::Motion::Home => Action::Motion(Motion::Home), + modit::Motion::Inside => { + //TODO: what to do for this psuedo-motion? + return; + } + modit::Motion::Left => Action::Motion(Motion::Left), + modit::Motion::LeftInLine => { + let cursor = editor.cursor(); + if cursor.index > 0 { + Action::Motion(Motion::Left) + } else { + return; + } + } + modit::Motion::Line => { + //TODO: what to do for this psuedo-motion? + return; + } + modit::Motion::NextChar(find_c) => { + let mut cursor = editor.cursor(); + editor.with_buffer(|buffer| { + let text = buffer.lines[cursor.line].text(); + if cursor.index < text.len() { + if let Some((i, _)) = text[cursor.index..] + .char_indices() + .find(|&(i, c)| i > 0 && c == find_c) + { + cursor.index += i; + } + } + }); + editor.set_cursor(cursor); + return; + } + modit::Motion::NextCharTill(find_c) => { + let mut cursor = editor.cursor(); + editor.with_buffer(|buffer| { + let text = buffer.lines[cursor.line].text(); + if cursor.index < text.len() { + let mut last_i = 0; + for (i, c) in text[cursor.index..].char_indices() { + if last_i > 0 && c == find_c { + cursor.index += last_i; + break; + } else { + last_i = i; + } + } + } + }); + editor.set_cursor(cursor); + return; + } + modit::Motion::NextSearch => match &self.search_opt { + Some((value, forwards)) => { + search(editor, value, *forwards); + return; + } + None => return, + }, + modit::Motion::NextWordEnd(word) => { + let mut cursor = editor.cursor(); + editor.with_buffer(|buffer| { + loop { + let text = buffer.lines[cursor.line].text(); + if cursor.index < text.len() { + cursor.index = WordIter::new(text, word) + .map(|(i, w)| { + i + w + .char_indices() + .last() + .map(|(i, _)| i) + .unwrap_or(0) + }) + .find(|&i| i > cursor.index) + .unwrap_or(text.len()); + if cursor.index == text.len() { + // Try again, searching next line + continue; + } + } else if cursor.line + 1 < buffer.lines.len() { + // Go to next line and rerun loop + cursor.line += 1; + cursor.index = 0; + continue; + } + break; + } + }); + editor.set_cursor(cursor); + return; + } + modit::Motion::NextWordStart(word) => { + let mut cursor = editor.cursor(); + editor.with_buffer(|buffer| { + loop { + let text = buffer.lines[cursor.line].text(); + if cursor.index < text.len() { + cursor.index = WordIter::new(text, word) + .map(|(i, _)| i) + .find(|&i| i > cursor.index) + .unwrap_or(text.len()); + if cursor.index == text.len() { + // Try again, searching next line + continue; + } + } else if cursor.line + 1 < buffer.lines.len() { + // Go to next line and rerun loop + cursor.line += 1; + cursor.index = 0; + continue; + } + break; + } + }); + editor.set_cursor(cursor); + return; + } + modit::Motion::PageDown => Action::Motion(Motion::PageDown), + modit::Motion::PageUp => Action::Motion(Motion::PageUp), + modit::Motion::PreviousChar(find_c) => { + let mut cursor = editor.cursor(); + editor.with_buffer(|buffer| { + let text = buffer.lines[cursor.line].text(); + if cursor.index > 0 { + if let Some((i, _)) = text[..cursor.index] + .char_indices() + .rfind(|&(_, c)| c == find_c) + { + cursor.index = i; + } + } + }); + editor.set_cursor(cursor); + return; + } + modit::Motion::PreviousCharTill(find_c) => { + let mut cursor = editor.cursor(); + editor.with_buffer(|buffer| { + let text = buffer.lines[cursor.line].text(); + if cursor.index > 0 { + if let Some(i) = text[..cursor.index] + .char_indices() + .filter_map(|(i, c)| { + if c == find_c { + let end = i + c.len_utf8(); + if end < cursor.index { + return Some(end); + } + } + None + }) + .last() + { + cursor.index = i; + } + } + }); + editor.set_cursor(cursor); + return; + } + modit::Motion::PreviousSearch => match &self.search_opt { + Some((value, forwards)) => { + search(editor, value, !*forwards); + return; + } + None => return, + }, + modit::Motion::PreviousWordEnd(word) => { + let mut cursor = editor.cursor(); + editor.with_buffer(|buffer| { + loop { + let text = buffer.lines[cursor.line].text(); + if cursor.index > 0 { + cursor.index = WordIter::new(text, word) + .map(|(i, w)| { + i + w + .char_indices() + .last() + .map(|(i, _)| i) + .unwrap_or(0) + }) + .filter(|&i| i < cursor.index) + .last() + .unwrap_or(0); + if cursor.index == 0 { + // Try again, searching previous line + continue; + } + } else if cursor.line > 0 { + // Go to previous line and rerun loop + cursor.line -= 1; + cursor.index = buffer.lines[cursor.line].text().len(); + continue; + } + break; + } + }); + editor.set_cursor(cursor); + return; + } + modit::Motion::PreviousWordStart(word) => { + let mut cursor = editor.cursor(); + editor.with_buffer(|buffer| { + loop { + let text = buffer.lines[cursor.line].text(); + if cursor.index > 0 { + cursor.index = WordIter::new(text, word) + .map(|(i, _)| i) + .filter(|&i| i < cursor.index) + .last() + .unwrap_or(0); + if cursor.index == 0 { + // Try again, searching previous line + continue; + } + } else if cursor.line > 0 { + // Go to previous line and rerun loop + cursor.line -= 1; + cursor.index = buffer.lines[cursor.line].text().len(); + continue; + } + break; + } + }); + editor.set_cursor(cursor); + return; + } + modit::Motion::Right => Action::Motion(Motion::Right), + modit::Motion::RightInLine => { + let cursor = editor.cursor(); + if cursor.index + < editor + .with_buffer(|buffer| buffer.lines[cursor.line].text().len()) + { + Action::Motion(Motion::Right) + } else { + return; + } + } + modit::Motion::ScreenHigh => { + //TODO: is this efficient? + if let Some(line_i) = editor.with_buffer(|buffer| { + buffer.layout_runs().next().map(|first| first.line_i) + }) { + Action::Motion(Motion::GotoLine(line_i)) + } else { + return; + } + } + modit::Motion::ScreenLow => { + //TODO: is this efficient? + if let Some(line_i) = editor.with_buffer(|buffer| { + buffer.layout_runs().last().map(|last| last.line_i) + }) { + Action::Motion(Motion::GotoLine(line_i)) + } else { + return; + } + } + modit::Motion::ScreenMiddle => { + //TODO: is this efficient? + let action_opt = editor.with_buffer(|buffer| { + let mut layout_runs = buffer.layout_runs(); + + match (layout_runs.next(), layout_runs.last()) { + (Some(first), Some(last)) => Some(Action::Motion( + Motion::GotoLine((last.line_i + first.line_i) / 2), + )), + _ => None, + } + }); + match action_opt { + Some(action) => action, + None => return, + } + } + modit::Motion::Selection => { + //TODO: what to do for this psuedo-motion? + return; + } + modit::Motion::SoftHome => Action::Motion(Motion::SoftHome), + modit::Motion::Up => Action::Motion(Motion::Up), + } + } + }; + editor.action(font_system, action); + }); + } + + fn cursor_position(&self) -> Option<(i32, i32)> { + self.editor.cursor_position() + } +} + +impl BorrowedWithFontSystem<'_, ViEditor<'_, '_>> { + /// Load text from a file, and also set syntax to the best option + /// + /// ## Errors + /// Returns an `io::Error` if reading the file fails + #[cfg(feature = "std")] + pub fn load_text>( + &mut self, + path: P, + attrs: crate::Attrs, + ) -> std::io::Result<()> { + self.inner.load_text(self.font_system, path, attrs) + } + + #[cfg(feature = "swash")] + pub fn draw(&mut self, cache: &mut crate::SwashCache, f: F) + where + F: FnMut(i32, i32, u32, u32, Color), + { + self.inner.draw(self.font_system, cache, f); + } +} diff --git a/vendor/cosmic-text/src/font/fallback/macos.rs b/vendor/cosmic-text/src/font/fallback/macos.rs new file mode 100644 index 0000000..7eddd48 --- /dev/null +++ b/vendor/cosmic-text/src/font/fallback/macos.rs @@ -0,0 +1,110 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +use unicode_script::Script; + +use super::Fallback; + +/// A platform-specific font fallback list, for `MacOS`. +#[derive(Debug)] +pub struct PlatformFallback; + +impl Fallback for PlatformFallback { + fn common_fallback(&self) -> &'static [&'static str] { + common_fallback() + } + + fn forbidden_fallback(&self) -> &'static [&'static str] { + forbidden_fallback() + } + + fn script_fallback( + &self, + script: unicode_script::Script, + locale: &str, + ) -> &'static [&'static str] { + script_fallback(script, locale) + } +} + +// Fallbacks to use after any script specific fallbacks +fn common_fallback() -> &'static [&'static str] { + &[ + ".SF NS", + "Menlo", + "Apple Color Emoji", + "Geneva", + "Arial Unicode MS", + ] +} + +// Fallbacks to never use +fn forbidden_fallback() -> &'static [&'static str] { + &[".LastResort"] +} + +fn han_unification(locale: &str) -> &'static [&'static str] { + match locale { + // Japan + "ja" => &["Hiragino Sans"], + // Korea + "ko" => &["Apple SD Gothic Neo"], + // Hong Kong + "zh-HK" => &["PingFang HK"], + // Taiwan + "zh-TW" => &["PingFang TC"], + // Simplified Chinese is the default (also catches "zh-CN" for China) + _ => &["PingFang SC"], + } +} + +// Fallbacks to use per script +fn script_fallback(script: Script, locale: &str) -> &'static [&'static str] { + //TODO: abstract style (sans/serif/monospaced) + //TODO: pull more data from about:config font.name-list.sans-serif in Firefox + match script { + Script::Adlam => &["Noto Sans Adlam"], + Script::Arabic => &["Geeza Pro"], + Script::Armenian => &["Noto Sans Armenian"], + Script::Bengali => &["Bangla Sangam MN"], + Script::Buhid => &["Noto Sans Buhid"], + Script::Canadian_Aboriginal => &["Euphemia UCAS"], + Script::Chakma => &["Noto Sans Chakma"], + Script::Devanagari => &["Devanagari Sangam MN"], + Script::Ethiopic => &["Kefa"], + Script::Gothic => &["Noto Sans Gothic"], + Script::Grantha => &["Grantha Sangam MN"], + Script::Gujarati => &["Gujarati Sangam MN"], + Script::Gurmukhi => &["Gurmukhi Sangam MN"], + Script::Han => han_unification(locale), + Script::Hangul => han_unification("ko"), + Script::Hanunoo => &["Noto Sans Hanunoo"], + Script::Hebrew => &["Arial"], + Script::Hiragana => han_unification("ja"), + Script::Javanese => &["Noto Sans Javanese"], + Script::Kannada => &["Noto Sans Kannada"], + Script::Katakana => han_unification("ja"), + Script::Khmer => &["Khmer Sangam MN"], + Script::Lao => &["Lao Sangam MN"], + Script::Malayalam => &["Malayalam Sangam MN"], + Script::Mongolian => &["Noto Sans Mongolian"], + Script::Myanmar => &["Noto Sans Myanmar"], + Script::Oriya => &["Noto Sans Oriya"], + Script::Sinhala => &["Sinhala Sangam MN"], + Script::Syriac => &["Noto Sans Syriac"], + Script::Tagalog => &["Noto Sans Tagalog"], + Script::Tagbanwa => &["Noto Sans Tagbanwa"], + Script::Tai_Le => &["Noto Sans Tai Le"], + Script::Tai_Tham => &["Noto Sans Tai Tham"], + Script::Tai_Viet => &["Noto Sans Tai Viet"], + Script::Tamil => &["InaiMathi"], + Script::Telugu => &["Telugu Sangam MN"], + Script::Thaana => &["Noto Sans Thaana"], + Script::Thai => &["Ayuthaya"], + Script::Tibetan => &["Kailasa"], + Script::Tifinagh => &["Noto Sans Tifinagh"], + Script::Vai => &["Noto Sans Vai"], + //TODO: Use han_unification? + Script::Yi => &["Noto Sans Yi", "PingFang SC"], + _ => &[], + } +} diff --git a/vendor/cosmic-text/src/font/fallback/mod.rs b/vendor/cosmic-text/src/font/fallback/mod.rs new file mode 100644 index 0000000..032f112 --- /dev/null +++ b/vendor/cosmic-text/src/font/fallback/mod.rs @@ -0,0 +1,480 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +use alloc::borrow::ToOwned; +use alloc::string::String; +use alloc::sync::Arc; +use alloc::vec::Vec; +use core::{mem, ops::Range}; +use fontdb::Family; +use unicode_script::Script; + +use crate::{BuildHasher, Font, FontMatchKey, FontSystem, HashMap, ShapeBuffer}; + +#[cfg(not(any(all(unix, not(target_os = "android")), target_os = "windows")))] +#[path = "other.rs"] +mod platform; + +#[cfg(target_os = "macos")] +#[path = "macos.rs"] +mod platform; + +#[cfg(all(unix, not(any(target_os = "android", target_os = "macos"))))] +#[path = "unix.rs"] +mod platform; + +#[cfg(target_os = "windows")] +#[path = "windows.rs"] +mod platform; + +/// The `Fallback` trait allows for configurable font fallback lists to be set during construction of the [`FontSystem`]. +/// +/// A custom fallback list can be added via the [`FontSystem::new_with_locale_and_db_and_fallback`] constructor. +/// +/// A default implementation is provided by the [`PlatformFallback`] struct, which encapsulates the target platform's pre-configured fallback lists. +/// +/// ```rust +/// # use unicode_script::Script; +/// # use cosmic_text::{Fallback, FontSystem}; +/// struct MyFallback; +/// impl Fallback for MyFallback { +/// fn common_fallback(&self) -> &[&'static str] { +/// &[ +/// "Segoe UI", +/// "Segoe UI Emoji", +/// "Segoe UI Symbol", +/// "Segoe UI Historic", +/// ] +/// } +/// +/// fn forbidden_fallback(&self) -> &[&'static str] { +/// &[] +/// } +/// +/// fn script_fallback(&self, script: Script, locale: &str) -> &[&'static str] { +/// match script { +/// Script::Adlam => &["Ebrima"], +/// Script::Bengali => &["Nirmala UI"], +/// Script::Canadian_Aboriginal => &["Gadugi"], +/// // ... +/// _ => &[], +/// } +/// } +/// } +/// +/// let locale = "en-US".to_string(); +/// let db = fontdb::Database::new(); +/// let font_system = FontSystem::new_with_locale_and_db_and_fallback(locale, db, MyFallback); +/// ``` +pub trait Fallback: Send + Sync { + /// Fallbacks to use after any script specific fallbacks + fn common_fallback(&self) -> &[&'static str]; + + /// Fallbacks to never use + fn forbidden_fallback(&self) -> &[&'static str]; + + /// Fallbacks to use per script + fn script_fallback(&self, script: Script, locale: &str) -> &[&'static str]; +} + +#[derive(Debug, Default)] +pub(crate) struct Fallbacks { + lists: Vec<&'static str>, + common_fallback_range: Range, + forbidden_fallback_range: Range, + // PERF: Consider using NoHashHasher since Script is just an integer + script_fallback_ranges: HashMap>, + locale: String, +} + +impl Fallbacks { + pub(crate) fn new(fallbacks: &dyn Fallback, scripts: &[Script], locale: &str) -> Self { + let common_fallback = fallbacks.common_fallback(); + + let forbidden_fallback = fallbacks.forbidden_fallback(); + + let mut lists = + Vec::with_capacity(common_fallback.len() + forbidden_fallback.len() + scripts.len()); + + let mut index = lists.len(); + let mut new_range = |lists: &Vec<&str>| { + let old_index = index; + index = lists.len(); + old_index..index + }; + + lists.extend_from_slice(common_fallback); + let common_fallback_range = new_range(&lists); + + lists.extend_from_slice(forbidden_fallback); + let forbidden_fallback_range = new_range(&lists); + + let mut script_fallback_ranges = + HashMap::with_capacity_and_hasher(scripts.len(), BuildHasher::default()); + for &script in scripts { + let script_fallback = fallbacks.script_fallback(script, locale); + lists.extend_from_slice(script_fallback); + let script_fallback_range = new_range(&lists); + script_fallback_ranges.insert(script, script_fallback_range); + } + + let locale = locale.to_owned(); + Self { + lists, + common_fallback_range, + forbidden_fallback_range, + script_fallback_ranges, + locale, + } + } + + pub(crate) fn extend(&mut self, fallbacks: &dyn Fallback, scripts: &[Script]) { + self.lists.reserve(scripts.len()); + + let mut index = self.lists.len(); + let mut new_range = |lists: &Vec<&str>| { + let old_index = index; + index = lists.len(); + old_index..index + }; + + for &script in scripts { + self.script_fallback_ranges + .entry(script) + .or_insert_with_key(|&script| { + let script_fallback = fallbacks.script_fallback(script, &self.locale); + self.lists.extend_from_slice(script_fallback); + new_range(&self.lists) + }); + } + } + + pub(crate) fn common_fallback(&self) -> &[&'static str] { + &self.lists[self.common_fallback_range.clone()] + } + + pub(crate) fn forbidden_fallback(&self) -> &[&'static str] { + &self.lists[self.forbidden_fallback_range.clone()] + } + + pub(crate) fn script_fallback(&self, script: Script) -> &[&'static str] { + self.script_fallback_ranges + .get(&script) + .map_or(&[], |range| &self.lists[range.clone()]) + } +} + +pub use platform::PlatformFallback; + +#[cfg(not(feature = "warn_on_missing_glyphs"))] +use log::debug as missing_warn; +#[cfg(feature = "warn_on_missing_glyphs")] +use log::warn as missing_warn; + +// Match on lowest font_weight_diff, then script_non_matches, then font_weight +// Default font gets None for both `weight_offset` and `script_non_matches`, and thus, it is +// always the first to be popped from the set. +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)] +pub(crate) struct MonospaceFallbackInfo { + font_weight_diff: Option, + codepoint_non_matches: Option, + font_weight: u16, + id: fontdb::ID, +} + +pub struct FontFallbackIter<'a> { + font_system: &'a mut FontSystem, + font_match_keys: &'a [FontMatchKey], + skip_font_id: Option, + default_families: &'a [&'a Family<'a>], + default_i: usize, + scripts: &'a [Script], + word: &'a str, + script_i: (usize, usize), + common_i: usize, + other_i: usize, + end: bool, +} + +impl<'a> FontFallbackIter<'a> { + pub fn new( + font_system: &'a mut FontSystem, + font_match_keys: &'a [FontMatchKey], + skip_font_id: Option, + default_families: &'a [&'a Family<'a>], + scripts: &'a [Script], + word: &'a str, + ) -> Self { + font_system + .fallbacks + .extend(font_system.dyn_fallback.as_ref(), scripts); + font_system.monospace_fallbacks_buffer.clear(); + Self { + font_system, + font_match_keys, + skip_font_id, + default_families, + default_i: 0, + scripts, + word, + script_i: (0, 0), + common_i: 0, + other_i: 0, + end: false, + } + } + + pub fn check_missing(&mut self, word: &str) { + if self.end { + missing_warn!( + "Failed to find any fallback for {:?} locale '{}': '{}'", + self.scripts, + self.font_system.locale(), + word + ); + } else if self.other_i > 0 { + missing_warn!( + "Failed to find preset fallback for {:?} locale '{}', used '{}': '{}'", + self.scripts, + self.font_system.locale(), + self.face_name(self.font_match_keys[self.other_i - 1].id), + word + ); + } else if !self.scripts.is_empty() && self.common_i > 0 { + let family = self.font_system.fallbacks.common_fallback()[self.common_i - 1]; + missing_warn!( + "Failed to find script fallback for {:?} locale '{}', used '{}': '{}'", + self.scripts, + self.font_system.locale(), + family, + word + ); + } + } + + pub fn face_name(&self, id: fontdb::ID) -> &str { + if let Some(face) = self.font_system.db().face(id) { + if let Some((name, _)) = face.families.first() { + name + } else { + &face.post_script_name + } + } else { + "invalid font id" + } + } + + pub fn shape_caches(&mut self) -> &mut ShapeBuffer { + &mut self.font_system.shape_buffer + } + + fn face_contains_family(&self, id: fontdb::ID, family_name: &str) -> bool { + if let Some(face) = self.font_system.db().face(id) { + face.families.iter().any(|(name, _)| name == family_name) + } else { + false + } + } + + fn default_font_match_key(&self) -> Option<&FontMatchKey> { + let default_family = self.default_families[self.default_i - 1]; + let default_family_name = self.font_system.db().family_name(default_family); + + self.font_match_keys + .iter() + .filter(|m_key| m_key.font_weight_diff == 0) + .filter(|m_key| Some(m_key.id) != self.skip_font_id) + .find(|m_key| self.face_contains_family(m_key.id, default_family_name)) + } + + fn next_item(&mut self, fallbacks: &Fallbacks) -> Option<::Item> { + if let Some(fallback_info) = self.font_system.monospace_fallbacks_buffer.pop_first() { + if let Some(font) = self.font_system.get_font(fallback_info.id) { + return Some(font); + } + } + + let font_match_keys_iter = |is_mono| { + self.font_match_keys + .iter() + .filter(move |m_key| m_key.font_weight_diff == 0 || is_mono) + .filter(|m_key| Some(m_key.id) != self.skip_font_id) + }; + + 'DEF_FAM: while self.default_i < self.default_families.len() { + self.default_i += 1; + let is_mono = self.default_families[self.default_i - 1] == &Family::Monospace; + let default_font_match_key = self.default_font_match_key().cloned(); + let word_chars_count = self.word.chars().count(); + + macro_rules! mk_mono_fallback_info { + ($m_key:expr) => {{ + let supported_cp_count_opt = self + .font_system + .get_font_supported_codepoints_in_word($m_key.id, self.word); + + supported_cp_count_opt.map(|supported_cp_count| { + let codepoint_non_matches = word_chars_count - supported_cp_count; + + MonospaceFallbackInfo { + font_weight_diff: Some($m_key.font_weight_diff), + codepoint_non_matches: Some(codepoint_non_matches), + font_weight: $m_key.font_weight, + id: $m_key.id, + } + }) + }}; + } + + match (is_mono, default_font_match_key.as_ref()) { + (false, None) => break 'DEF_FAM, + (false, Some(m_key)) => { + if let Some(font) = self.font_system.get_font(m_key.id) { + return Some(font); + } else { + break 'DEF_FAM; + } + } + (true, None) => (), + (true, Some(m_key)) => { + // Default Monospace font + if let Some(mut fallback_info) = mk_mono_fallback_info!(m_key) { + fallback_info.font_weight_diff = None; + + // Return early if default Monospace font supports all word codepoints. + // Otherewise, add to fallbacks set + if fallback_info.codepoint_non_matches == Some(0) { + if let Some(font) = self.font_system.get_font(m_key.id) { + return Some(font); + } + } else { + assert!(self + .font_system + .monospace_fallbacks_buffer + .insert(fallback_info)); + } + } + } + }; + + let mono_ids_for_scripts = if is_mono && !self.scripts.is_empty() { + let scripts = self.scripts.iter().filter_map(|script| { + let script_as_lower = script.short_name().to_lowercase(); + <[u8; 4]>::try_from(script_as_lower.as_bytes()).ok() + }); + self.font_system.get_monospace_ids_for_scripts(scripts) + } else { + Vec::new() + }; + + for m_key in font_match_keys_iter(is_mono) { + if Some(m_key.id) != default_font_match_key.as_ref().map(|m_key| m_key.id) { + let is_mono_id = if mono_ids_for_scripts.is_empty() { + self.font_system.is_monospace(m_key.id) + } else { + mono_ids_for_scripts.binary_search(&m_key.id).is_ok() + }; + + if is_mono_id { + let supported_cp_count_opt = self + .font_system + .get_font_supported_codepoints_in_word(m_key.id, self.word); + if let Some(supported_cp_count) = supported_cp_count_opt { + let codepoint_non_matches = + self.word.chars().count() - supported_cp_count; + + let fallback_info = MonospaceFallbackInfo { + font_weight_diff: Some(m_key.font_weight_diff), + codepoint_non_matches: Some(codepoint_non_matches), + font_weight: m_key.font_weight, + id: m_key.id, + }; + assert!(self + .font_system + .monospace_fallbacks_buffer + .insert(fallback_info)); + } + } + } + } + // If default family is Monospace fallback to first monospaced font + if let Some(fallback_info) = self.font_system.monospace_fallbacks_buffer.pop_first() { + if let Some(font) = self.font_system.get_font(fallback_info.id) { + return Some(font); + } + } + } + + while self.script_i.0 < self.scripts.len() { + let script = self.scripts[self.script_i.0]; + + let script_families = fallbacks.script_fallback(script); + + while self.script_i.1 < script_families.len() { + let script_family = script_families[self.script_i.1]; + self.script_i.1 += 1; + for m_key in font_match_keys_iter(false) { + if self.face_contains_family(m_key.id, script_family) { + if let Some(font) = self.font_system.get_font(m_key.id) { + return Some(font); + } + } + } + log::debug!( + "failed to find family '{}' for script {:?} and locale '{}'", + script_family, + script, + self.font_system.locale(), + ); + } + + self.script_i.0 += 1; + self.script_i.1 = 0; + } + + let common_families = fallbacks.common_fallback(); + while self.common_i < common_families.len() { + let common_family = common_families[self.common_i]; + self.common_i += 1; + for m_key in font_match_keys_iter(false) { + if self.face_contains_family(m_key.id, common_family) { + if let Some(font) = self.font_system.get_font(m_key.id) { + return Some(font); + } + } + } + log::debug!("failed to find family '{}'", common_family); + } + + //TODO: do we need to do this? + //TODO: do not evaluate fonts more than once! + let forbidden_families = fallbacks.forbidden_fallback(); + while self.other_i < self.font_match_keys.len() { + let id = self.font_match_keys[self.other_i].id; + self.other_i += 1; + if Some(id) == self.skip_font_id { + continue; + } + if forbidden_families + .iter() + .all(|family_name| !self.face_contains_family(id, family_name)) + { + if let Some(font) = self.font_system.get_font(id) { + return Some(font); + } + } + } + + self.end = true; + None + } +} + +impl Iterator for FontFallbackIter<'_> { + type Item = Arc; + fn next(&mut self) -> Option { + let mut fallbacks = mem::take(&mut self.font_system.fallbacks); + let item = self.next_item(&fallbacks); + mem::swap(&mut fallbacks, &mut self.font_system.fallbacks); + item + } +} diff --git a/vendor/cosmic-text/src/font/fallback/other.rs b/vendor/cosmic-text/src/font/fallback/other.rs new file mode 100644 index 0000000..7659d80 --- /dev/null +++ b/vendor/cosmic-text/src/font/fallback/other.rs @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +use unicode_script::Script; + +use super::Fallback; + +/// An empty platform-specific font fallback list. +#[derive(Debug)] +pub struct PlatformFallback; + +impl Fallback for PlatformFallback { + fn common_fallback(&self) -> &'static [&'static str] { + common_fallback() + } + + fn forbidden_fallback(&self) -> &'static [&'static str] { + forbidden_fallback() + } + + fn script_fallback( + &self, + script: unicode_script::Script, + locale: &str, + ) -> &'static [&'static str] { + script_fallback(script, locale) + } +} + +// Fallbacks to use after any script specific fallbacks +fn common_fallback() -> &'static [&'static str] { + &[] +} + +// Fallbacks to never use +fn forbidden_fallback() -> &'static [&'static str] { + &[] +} + +// Fallbacks to use per script +fn script_fallback(_script: Script, _locale: &str) -> &'static [&'static str] { + &[] +} diff --git a/vendor/cosmic-text/src/font/fallback/unix.rs b/vendor/cosmic-text/src/font/fallback/unix.rs new file mode 100644 index 0000000..12c4a7e --- /dev/null +++ b/vendor/cosmic-text/src/font/fallback/unix.rs @@ -0,0 +1,129 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +use unicode_script::Script; + +use super::Fallback; + +/// A platform-specific font fallback list, for Unix. +#[derive(Debug)] +pub struct PlatformFallback; + +impl Fallback for PlatformFallback { + fn common_fallback(&self) -> &'static [&'static str] { + common_fallback() + } + + fn forbidden_fallback(&self) -> &'static [&'static str] { + forbidden_fallback() + } + + fn script_fallback( + &self, + script: unicode_script::Script, + locale: &str, + ) -> &'static [&'static str] { + script_fallback(script, locale) + } +} + +// Fallbacks to use after any script specific fallbacks +fn common_fallback() -> &'static [&'static str] { + //TODO: abstract style (sans/serif/monospaced) + &[ + /* Sans-serif fallbacks */ + "Noto Sans", + /* More sans-serif fallbacks */ + "DejaVu Sans", + "FreeSans", + /* Mono fallbacks */ + "Noto Sans Mono", + "DejaVu Sans Mono", + "FreeMono", + /* Symbols fallbacks */ + "Noto Sans Symbols", + "Noto Sans Symbols2", + /* Emoji fallbacks*/ + "Noto Color Emoji", + //TODO: Add CJK script here for doublewides? + ] +} + +// Fallbacks to never use +fn forbidden_fallback() -> &'static [&'static str] { + &[] +} + +fn han_unification(locale: &str) -> &'static [&'static str] { + match locale { + // Japan + "ja" => &["Noto Sans CJK JP"], + // Korea + "ko" => &["Noto Sans CJK KR"], + // Hong Kong + "zh-HK" => &["Noto Sans CJK HK"], + // Taiwan + "zh-TW" => &["Noto Sans CJK TC"], + // Simplified Chinese is the default (also catches "zh-CN" for China) + _ => &["Noto Sans CJK SC"], + } +} + +// Fallbacks to use per script +fn script_fallback(script: Script, locale: &str) -> &'static [&'static str] { + //TODO: abstract style (sans/serif/monospaced) + match script { + Script::Adlam => &["Noto Sans Adlam", "Noto Sans Adlam Unjoined"], + Script::Arabic => &["Noto Sans Arabic"], + Script::Armenian => &["Noto Sans Armenian"], + Script::Bengali => &["Noto Sans Bengali"], + Script::Bopomofo => han_unification(locale), + //TODO: DejaVu Sans would typically be selected for braille characters, + // but this breaks alignment when used alongside monospaced text. + // By requesting the use of FreeMono first, this issue can be avoided. + Script::Braille => &["FreeMono"], + Script::Buhid => &["Noto Sans Buhid"], + Script::Chakma => &["Noto Sans Chakma"], + Script::Cherokee => &["Noto Sans Cherokee"], + Script::Deseret => &["Noto Sans Deseret"], + Script::Devanagari => &["Noto Sans Devanagari"], + Script::Ethiopic => &["Noto Sans Ethiopic"], + Script::Georgian => &["Noto Sans Georgian"], + Script::Gothic => &["Noto Sans Gothic"], + Script::Grantha => &["Noto Sans Grantha"], + Script::Gujarati => &["Noto Sans Gujarati"], + Script::Gurmukhi => &["Noto Sans Gurmukhi"], + Script::Han => han_unification(locale), + Script::Hangul => han_unification("ko"), + Script::Hanunoo => &["Noto Sans Hanunoo"], + Script::Hebrew => &["Noto Sans Hebrew"], + Script::Hiragana => han_unification("ja"), + Script::Javanese => &["Noto Sans Javanese"], + Script::Kannada => &["Noto Sans Kannada"], + Script::Katakana => han_unification("ja"), + Script::Khmer => &["Noto Sans Khmer"], + Script::Lao => &["Noto Sans Lao"], + Script::Malayalam => &["Noto Sans Malayalam"], + Script::Mongolian => &["Noto Sans Mongolian"], + Script::Myanmar => &["Noto Sans Myanmar"], + Script::Oriya => &["Noto Sans Oriya"], + Script::Runic => &["Noto Sans Runic"], + Script::Sinhala => &["Noto Sans Sinhala"], + Script::Syriac => &["Noto Sans Syriac"], + Script::Tagalog => &["Noto Sans Tagalog"], + Script::Tagbanwa => &["Noto Sans Tagbanwa"], + Script::Tai_Le => &["Noto Sans Tai Le"], + Script::Tai_Tham => &["Noto Sans Tai Tham"], + Script::Tai_Viet => &["Noto Sans Tai Viet"], + Script::Tamil => &["Noto Sans Tamil"], + Script::Telugu => &["Noto Sans Telugu"], + Script::Thaana => &["Noto Sans Thaana"], + Script::Thai => &["Noto Sans Thai"], + //TODO: no sans script? + Script::Tibetan => &["Noto Serif Tibetan"], + Script::Tifinagh => &["Noto Sans Tifinagh"], + Script::Vai => &["Noto Sans Vai"], + //TODO: Use han_unification? + Script::Yi => &["Noto Sans Yi", "Noto Sans CJK SC"], + _ => &[], + } +} diff --git a/vendor/cosmic-text/src/font/fallback/windows.rs b/vendor/cosmic-text/src/font/fallback/windows.rs new file mode 100644 index 0000000..0737263 --- /dev/null +++ b/vendor/cosmic-text/src/font/fallback/windows.rs @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +use unicode_script::Script; + +use super::Fallback; + +/// A platform-specific font fallback list, for Windows. +#[derive(Debug)] +pub struct PlatformFallback; + +impl Fallback for PlatformFallback { + fn common_fallback(&self) -> &'static [&'static str] { + common_fallback() + } + + fn forbidden_fallback(&self) -> &'static [&'static str] { + forbidden_fallback() + } + + fn script_fallback( + &self, + script: unicode_script::Script, + locale: &str, + ) -> &'static [&'static str] { + script_fallback(script, locale) + } +} + +// Fallbacks to use after any script specific fallbacks +fn common_fallback() -> &'static [&'static str] { + //TODO: abstract style (sans/serif/monospaced) + &[ + "Segoe UI", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Segoe UI Historic", + //TODO: Add CJK script here for doublewides? + ] +} + +// Fallbacks to never use +fn forbidden_fallback() -> &'static [&'static str] { + &[] +} + +fn han_unification(locale: &str) -> &'static [&'static str] { + //TODO! + match locale { + // Japan + "ja" => &["Yu Gothic"], + // Korea + "ko" => &["Malgun Gothic"], + // Hong Kong" + "zh-HK" => &["MingLiU_HKSCS"], + // Taiwan + "zh-TW" => &["Microsoft JhengHei UI"], + // Simplified Chinese is the default (also catches "zh-CN" for China) + _ => &["Microsoft YaHei UI"], + } +} + +// Fallbacks to use per script +fn script_fallback(script: Script, locale: &str) -> &'static [&'static str] { + //TODO: better match https://github.com/chromium/chromium/blob/master/third_party/blink/renderer/platform/fonts/win/font_fallback_win.cc#L99 + match script { + Script::Adlam => &["Ebrima"], + Script::Bengali => &["Nirmala UI"], + Script::Canadian_Aboriginal => &["Gadugi"], + Script::Chakma => &["Nirmala UI"], + Script::Cherokee => &["Gadugi"], + Script::Devanagari => &["Nirmala UI"], + Script::Ethiopic => &["Ebrima"], + Script::Gujarati => &["Nirmala UI"], + Script::Gurmukhi => &["Nirmala UI"], + Script::Han => han_unification(locale), + Script::Hangul => han_unification("ko"), + Script::Hiragana => han_unification("ja"), + Script::Javanese => &["Javanese Text"], + Script::Kannada => &["Nirmala UI"], + Script::Katakana => han_unification("ja"), + Script::Khmer => &["Leelawadee UI"], + Script::Lao => &["Leelawadee UI"], + Script::Malayalam => &["Nirmala UI"], + Script::Mongolian => &["Mongolian Baiti"], + Script::Myanmar => &["Myanmar Text"], + Script::Oriya => &["Nirmala UI"], + Script::Sinhala => &["Nirmala UI"], + Script::Tamil => &["Nirmala UI"], + Script::Telugu => &["Nirmala UI"], + Script::Thaana => &["MV Boli"], + Script::Thai => &["Leelawadee UI"], + Script::Tibetan => &["Microsoft Himalaya"], + Script::Tifinagh => &["Ebrima"], + Script::Vai => &["Ebrima"], + Script::Yi => &["Microsoft Yi Baiti"], + _ => &[], + } +} diff --git a/vendor/cosmic-text/src/font/mod.rs b/vendor/cosmic-text/src/font/mod.rs new file mode 100644 index 0000000..cb9182a --- /dev/null +++ b/vendor/cosmic-text/src/font/mod.rs @@ -0,0 +1,218 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +// re-export ttf_parser +pub use ttf_parser; +// re-export peniko::Font; +#[cfg(feature = "peniko")] +pub use peniko::Font as PenikoFont; + +use core::fmt; + +use alloc::sync::Arc; +#[cfg(not(feature = "std"))] +use alloc::vec::Vec; + +use rustybuzz::Face as RustybuzzFace; +use self_cell::self_cell; + +pub(crate) mod fallback; +pub use fallback::{Fallback, PlatformFallback}; + +pub use self::system::*; +mod system; + +self_cell!( + struct OwnedFace { + owner: Arc + Send + Sync>, + + #[covariant] + dependent: RustybuzzFace, + } +); + +struct FontMonospaceFallback { + monospace_em_width: Option, + scripts: Vec<[u8; 4]>, + unicode_codepoints: Vec, +} + +/// A font +pub struct Font { + #[cfg(feature = "swash")] + swash: (u32, swash::CacheKey), + rustybuzz: OwnedFace, + #[cfg(not(feature = "peniko"))] + data: Arc + Send + Sync>, + #[cfg(feature = "peniko")] + data: peniko::Font, + id: fontdb::ID, + monospace_fallback: Option, +} + +impl fmt::Debug for Font { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("Font") + .field("id", &self.id) + .finish_non_exhaustive() + } +} + +impl Font { + pub fn id(&self) -> fontdb::ID { + self.id + } + + pub fn monospace_em_width(&self) -> Option { + self.monospace_fallback + .as_ref() + .and_then(|x| x.monospace_em_width) + } + + pub fn scripts(&self) -> &[[u8; 4]] { + self.monospace_fallback.as_ref().map_or(&[], |x| &x.scripts) + } + + pub fn unicode_codepoints(&self) -> &[u32] { + self.monospace_fallback + .as_ref() + .map_or(&[], |x| &x.unicode_codepoints) + } + + pub fn data(&self) -> &[u8] { + #[cfg(not(feature = "peniko"))] + { + (*self.data).as_ref() + } + #[cfg(feature = "peniko")] + { + self.data.data.data() + } + } + + pub fn rustybuzz(&self) -> &RustybuzzFace<'_> { + self.rustybuzz.borrow_dependent() + } + + #[cfg(feature = "peniko")] + pub fn as_peniko(&self) -> PenikoFont { + self.data.clone() + } + + #[cfg(feature = "swash")] + pub fn as_swash(&self) -> swash::FontRef<'_> { + let swash = &self.swash; + swash::FontRef { + data: self.data(), + offset: swash.0, + key: swash.1, + } + } +} + +impl Font { + pub fn new(db: &fontdb::Database, id: fontdb::ID) -> Option { + let info = db.face(id)?; + + let monospace_fallback = if cfg!(feature = "monospace_fallback") { + db.with_face_data(id, |font_data, face_index| { + let face = ttf_parser::Face::parse(font_data, face_index).ok()?; + let monospace_em_width = info + .monospaced + .then(|| { + let hor_advance = face.glyph_hor_advance(face.glyph_index(' ')?)? as f32; + let upem = face.units_per_em() as f32; + Some(hor_advance / upem) + }) + .flatten(); + + if info.monospaced && monospace_em_width.is_none() { + None?; + } + + let scripts = face + .tables() + .gpos + .into_iter() + .chain(face.tables().gsub) + .flat_map(|table| table.scripts) + .map(|script| script.tag.to_bytes()) + .collect(); + + let mut unicode_codepoints = Vec::new(); + + face.tables() + .cmap? + .subtables + .into_iter() + .filter(|subtable| subtable.is_unicode()) + .for_each(|subtable| { + unicode_codepoints.reserve(1024); + subtable.codepoints(|code_point| { + if subtable.glyph_index(code_point).is_some() { + unicode_codepoints.push(code_point); + } + }); + }); + + unicode_codepoints.shrink_to_fit(); + + Some(FontMonospaceFallback { + monospace_em_width, + scripts, + unicode_codepoints, + }) + })? + } else { + None + }; + + let data = match &info.source { + fontdb::Source::Binary(data) => Arc::clone(data), + #[cfg(feature = "std")] + fontdb::Source::File(path) => { + log::warn!("Unsupported fontdb Source::File('{}')", path.display()); + return None; + } + #[cfg(feature = "std")] + fontdb::Source::SharedFile(_path, data) => Arc::clone(data), + }; + + Some(Self { + id: info.id, + monospace_fallback, + #[cfg(feature = "swash")] + swash: { + let swash = swash::FontRef::from_index((*data).as_ref(), info.index as usize)?; + (swash.offset, swash.key) + }, + rustybuzz: OwnedFace::try_new(Arc::clone(&data), |data| { + RustybuzzFace::from_slice((**data).as_ref(), info.index).ok_or(()) + }) + .ok()?, + #[cfg(not(feature = "peniko"))] + data, + #[cfg(feature = "peniko")] + data: peniko::Font::new(peniko::Blob::new(data), info.index), + }) + } +} + +#[cfg(test)] +mod test { + #[test] + fn test_fonts_load_time() { + use crate::FontSystem; + use sys_locale::get_locale; + + #[cfg(not(target_arch = "wasm32"))] + let now = std::time::Instant::now(); + + let mut db = fontdb::Database::new(); + let locale = get_locale().expect("Local available"); + db.load_system_fonts(); + FontSystem::new_with_locale_and_db(locale, db); + + #[cfg(not(target_arch = "wasm32"))] + println!("Fonts load time {}ms.", now.elapsed().as_millis()); + } +} diff --git a/vendor/cosmic-text/src/font/system.rs b/vendor/cosmic-text/src/font/system.rs new file mode 100644 index 0000000..d3a91d9 --- /dev/null +++ b/vendor/cosmic-text/src/font/system.rs @@ -0,0 +1,407 @@ +use crate::{Attrs, Font, FontMatchAttrs, HashMap, ShapeBuffer}; +use alloc::boxed::Box; +use alloc::collections::BTreeSet; +use alloc::string::String; +use alloc::sync::Arc; +use alloc::vec::Vec; +use core::fmt; +use core::ops::{Deref, DerefMut}; + +// re-export fontdb and rustybuzz +pub use fontdb; +pub use rustybuzz; + +use super::fallback::{Fallback, Fallbacks, MonospaceFallbackInfo, PlatformFallback}; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] +pub struct FontMatchKey { + pub(crate) font_weight_diff: u16, + pub(crate) font_weight: u16, + pub(crate) id: fontdb::ID, +} + +struct FontCachedCodepointSupportInfo { + supported: Vec, + not_supported: Vec, +} + +impl FontCachedCodepointSupportInfo { + const SUPPORTED_MAX_SZ: usize = 512; + const NOT_SUPPORTED_MAX_SZ: usize = 1024; + + fn new() -> Self { + Self { + supported: Vec::with_capacity(Self::SUPPORTED_MAX_SZ), + not_supported: Vec::with_capacity(Self::NOT_SUPPORTED_MAX_SZ), + } + } + + #[inline(always)] + fn unknown_has_codepoint( + &mut self, + font_codepoints: &[u32], + codepoint: u32, + supported_insert_pos: usize, + not_supported_insert_pos: usize, + ) -> bool { + let ret = font_codepoints.contains(&codepoint); + if ret { + // don't bother inserting if we are going to truncate the entry away + if supported_insert_pos != Self::SUPPORTED_MAX_SZ { + self.supported.insert(supported_insert_pos, codepoint); + self.supported.truncate(Self::SUPPORTED_MAX_SZ); + } + } else { + // don't bother inserting if we are going to truncate the entry away + if not_supported_insert_pos != Self::NOT_SUPPORTED_MAX_SZ { + self.not_supported + .insert(not_supported_insert_pos, codepoint); + self.not_supported.truncate(Self::NOT_SUPPORTED_MAX_SZ); + } + } + ret + } + + #[inline(always)] + fn has_codepoint(&mut self, font_codepoints: &[u32], codepoint: u32) -> bool { + match self.supported.binary_search(&codepoint) { + Ok(_) => true, + Err(supported_insert_pos) => match self.not_supported.binary_search(&codepoint) { + Ok(_) => false, + Err(not_supported_insert_pos) => self.unknown_has_codepoint( + font_codepoints, + codepoint, + supported_insert_pos, + not_supported_insert_pos, + ), + }, + } + } +} + +/// Access to the system fonts. +pub struct FontSystem { + /// The locale of the system. + locale: String, + + /// The underlying font database. + db: fontdb::Database, + + /// Cache for loaded fonts from the database. + font_cache: HashMap>>, + + /// Sorted unique ID's of all Monospace fonts in DB + monospace_font_ids: Vec, + + /// Sorted unique ID's of all Monospace fonts in DB per script. + /// A font may support multiple scripts of course, so the same ID + /// may appear in multiple map value vecs. + per_script_monospace_font_ids: HashMap<[u8; 4], Vec>, + + /// Cache for font codepoint support info + font_codepoint_support_info_cache: HashMap, + + /// Cache for font matches. + font_matches_cache: HashMap>>, + + /// Scratch buffer for shaping and laying out. + pub(crate) shape_buffer: ShapeBuffer, + + /// Buffer for use in `FontFallbackIter`. + pub(crate) monospace_fallbacks_buffer: BTreeSet, + + /// Cache for shaped runs + #[cfg(feature = "shape-run-cache")] + pub shape_run_cache: crate::ShapeRunCache, + + /// List of fallbacks + pub(crate) dyn_fallback: Box, + + /// List of fallbacks + pub(crate) fallbacks: Fallbacks, +} + +impl fmt::Debug for FontSystem { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("FontSystem") + .field("locale", &self.locale) + .field("db", &self.db) + .finish() + } +} + +impl FontSystem { + const FONT_MATCHES_CACHE_SIZE_LIMIT: usize = 256; + /// Create a new [`FontSystem`], that allows access to any installed system fonts + /// + /// # Timing + /// + /// This function takes some time to run. On the release build, it can take up to a second, + /// while debug builds can take up to ten times longer. For this reason, it should only be + /// called once, and the resulting [`FontSystem`] should be shared. + pub fn new() -> Self { + Self::new_with_fonts(core::iter::empty()) + } + + /// Create a new [`FontSystem`] with a pre-specified set of fonts. + pub fn new_with_fonts(fonts: impl IntoIterator) -> Self { + let locale = Self::get_locale(); + log::debug!("Locale: {}", locale); + + let mut db = fontdb::Database::new(); + + Self::load_fonts(&mut db, fonts.into_iter()); + + //TODO: configurable default fonts + db.set_monospace_family("Noto Sans Mono"); + db.set_sans_serif_family("Open Sans"); + db.set_serif_family("DejaVu Serif"); + + Self::new_with_locale_and_db_and_fallback(locale, db, PlatformFallback) + } + + /// Create a new [`FontSystem`] with a pre-specified locale, font database and font fallback list. + pub fn new_with_locale_and_db_and_fallback( + locale: String, + db: fontdb::Database, + impl_fallback: impl Fallback + 'static, + ) -> Self { + let mut monospace_font_ids = db + .faces() + .filter(|face_info| { + face_info.monospaced && !face_info.post_script_name.contains("Emoji") + }) + .map(|face_info| face_info.id) + .collect::>(); + monospace_font_ids.sort(); + + let mut per_script_monospace_font_ids: HashMap<[u8; 4], BTreeSet> = + HashMap::default(); + + if cfg!(feature = "monospace_fallback") { + monospace_font_ids.iter().for_each(|&id| { + db.with_face_data(id, |font_data, face_index| { + let _ = ttf_parser::Face::parse(font_data, face_index).map(|face| { + face.tables() + .gpos + .into_iter() + .chain(face.tables().gsub) + .flat_map(|table| table.scripts) + .inspect(|script| { + per_script_monospace_font_ids + .entry(script.tag.to_bytes()) + .or_default() + .insert(id); + }) + }); + }); + }); + } + + let per_script_monospace_font_ids = per_script_monospace_font_ids + .into_iter() + .map(|(k, v)| (k, Vec::from_iter(v))) + .collect(); + + let fallbacks = Fallbacks::new(&impl_fallback, &[], &locale); + + Self { + locale, + db, + monospace_font_ids, + per_script_monospace_font_ids, + font_cache: Default::default(), + font_matches_cache: Default::default(), + font_codepoint_support_info_cache: Default::default(), + monospace_fallbacks_buffer: BTreeSet::default(), + #[cfg(feature = "shape-run-cache")] + shape_run_cache: crate::ShapeRunCache::default(), + shape_buffer: ShapeBuffer::default(), + dyn_fallback: Box::new(impl_fallback), + fallbacks, + } + } + + /// Create a new [`FontSystem`] with a pre-specified locale and font database. + pub fn new_with_locale_and_db(locale: String, db: fontdb::Database) -> Self { + Self::new_with_locale_and_db_and_fallback(locale, db, PlatformFallback) + } + + /// Get the locale. + pub fn locale(&self) -> &str { + &self.locale + } + + /// Get the database. + pub fn db(&self) -> &fontdb::Database { + &self.db + } + + /// Get a mutable reference to the database. + pub fn db_mut(&mut self) -> &mut fontdb::Database { + self.font_matches_cache.clear(); + &mut self.db + } + + /// Consume this [`FontSystem`] and return the locale and database. + pub fn into_locale_and_db(self) -> (String, fontdb::Database) { + (self.locale, self.db) + } + + /// Get a font by its ID. + pub fn get_font(&mut self, id: fontdb::ID) -> Option> { + self.font_cache + .entry(id) + .or_insert_with(|| { + #[cfg(feature = "std")] + unsafe { + self.db.make_shared_face_data(id); + } + match Font::new(&self.db, id) { + Some(font) => Some(Arc::new(font)), + None => { + log::warn!( + "failed to load font '{}'", + self.db.face(id)?.post_script_name + ); + None + } + } + }) + .clone() + } + + pub fn is_monospace(&self, id: fontdb::ID) -> bool { + self.monospace_font_ids.binary_search(&id).is_ok() + } + + pub fn get_monospace_ids_for_scripts( + &self, + scripts: impl Iterator, + ) -> Vec { + let mut ret = scripts + .filter_map(|script| self.per_script_monospace_font_ids.get(&script)) + .flat_map(|ids| ids.iter().copied()) + .collect::>(); + ret.sort(); + ret.dedup(); + ret + } + + #[inline(always)] + pub fn get_font_supported_codepoints_in_word( + &mut self, + id: fontdb::ID, + word: &str, + ) -> Option { + self.get_font(id).map(|font| { + let code_points = font.unicode_codepoints(); + let cache = self + .font_codepoint_support_info_cache + .entry(id) + .or_insert_with(FontCachedCodepointSupportInfo::new); + word.chars() + .filter(|ch| cache.has_codepoint(code_points, u32::from(*ch))) + .count() + }) + } + + pub fn get_font_matches(&mut self, attrs: &Attrs<'_>) -> Arc> { + // Clear the cache first if it reached the size limit + if self.font_matches_cache.len() >= Self::FONT_MATCHES_CACHE_SIZE_LIMIT { + log::trace!("clear font mache cache"); + self.font_matches_cache.clear(); + } + + self.font_matches_cache + //TODO: do not create AttrsOwned unless entry does not already exist + .entry(attrs.into()) + .or_insert_with(|| { + #[cfg(all(feature = "std", not(target_arch = "wasm32")))] + let now = std::time::Instant::now(); + + let mut font_match_keys = self + .db + .faces() + .filter(|face| attrs.matches(face)) + .map(|face| FontMatchKey { + font_weight_diff: attrs.weight.0.abs_diff(face.weight.0), + font_weight: face.weight.0, + id: face.id, + }) + .collect::>(); + + // Sort so we get the keys with weight_offset=0 first + font_match_keys.sort(); + + #[cfg(all(feature = "std", not(target_arch = "wasm32")))] + { + let elapsed = now.elapsed(); + log::debug!("font matches for {:?} in {:?}", attrs, elapsed); + } + + Arc::new(font_match_keys) + }) + .clone() + } + + #[cfg(feature = "std")] + fn get_locale() -> String { + sys_locale::get_locale().unwrap_or_else(|| { + log::warn!("failed to get system locale, falling back to en-US"); + String::from("en-US") + }) + } + + #[cfg(not(feature = "std"))] + fn get_locale() -> String { + String::from("en-US") + } + + #[cfg(feature = "std")] + fn load_fonts(db: &mut fontdb::Database, fonts: impl Iterator) { + #[cfg(not(target_arch = "wasm32"))] + let now = std::time::Instant::now(); + + db.load_system_fonts(); + + for source in fonts { + db.load_font_source(source); + } + + #[cfg(not(target_arch = "wasm32"))] + log::debug!( + "Parsed {} font faces in {}ms.", + db.len(), + now.elapsed().as_millis() + ); + } + + #[cfg(not(feature = "std"))] + fn load_fonts(db: &mut fontdb::Database, fonts: impl Iterator) { + for source in fonts { + db.load_font_source(source); + } + } +} + +/// A value borrowed together with an [`FontSystem`] +#[derive(Debug)] +pub struct BorrowedWithFontSystem<'a, T> { + pub(crate) inner: &'a mut T, + pub(crate) font_system: &'a mut FontSystem, +} + +impl Deref for BorrowedWithFontSystem<'_, T> { + type Target = T; + + fn deref(&self) -> &Self::Target { + self.inner + } +} + +impl DerefMut for BorrowedWithFontSystem<'_, T> { + fn deref_mut(&mut self) -> &mut Self::Target { + self.inner + } +} diff --git a/vendor/cosmic-text/src/glyph_cache.rs b/vendor/cosmic-text/src/glyph_cache.rs new file mode 100644 index 0000000..01ac1a4 --- /dev/null +++ b/vendor/cosmic-text/src/glyph_cache.rs @@ -0,0 +1,162 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +bitflags::bitflags! { + /// Flags that change rendering + #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] + #[repr(transparent)] + pub struct CacheKeyFlags: u32 { + /// Skew by 14 degrees to synthesize italic + const FAKE_ITALIC = 1; + } +} + +/// Key for building a glyph cache +#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub struct CacheKey { + /// Font ID + pub font_id: fontdb::ID, + /// Glyph ID + pub glyph_id: u16, + /// `f32` bits of font size + pub font_size_bits: u32, + /// Binning of fractional X offset + pub x_bin: SubpixelBin, + /// Binning of fractional Y offset + pub y_bin: SubpixelBin, + /// [`CacheKeyFlags`] + pub flags: CacheKeyFlags, +} + +impl CacheKey { + pub fn new( + font_id: fontdb::ID, + glyph_id: u16, + font_size: f32, + pos: (f32, f32), + flags: CacheKeyFlags, + ) -> (Self, i32, i32) { + let (x, x_bin) = SubpixelBin::new(pos.0); + let (y, y_bin) = SubpixelBin::new(pos.1); + ( + Self { + font_id, + glyph_id, + font_size_bits: font_size.to_bits(), + x_bin, + y_bin, + flags, + }, + x, + y, + ) + } +} + +/// Binning of subpixel position for cache optimization +#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +pub enum SubpixelBin { + Zero, + One, + Two, + Three, +} + +impl SubpixelBin { + pub fn new(pos: f32) -> (i32, Self) { + let trunc = pos as i32; + let fract = pos - trunc as f32; + + if pos.is_sign_negative() { + if fract > -0.125 { + (trunc, Self::Zero) + } else if fract > -0.375 { + (trunc - 1, Self::Three) + } else if fract > -0.625 { + (trunc - 1, Self::Two) + } else if fract > -0.875 { + (trunc - 1, Self::One) + } else { + (trunc - 1, Self::Zero) + } + } else { + #[allow(clippy::collapsible_else_if)] + if fract < 0.125 { + (trunc, Self::Zero) + } else if fract < 0.375 { + (trunc, Self::One) + } else if fract < 0.625 { + (trunc, Self::Two) + } else if fract < 0.875 { + (trunc, Self::Three) + } else { + (trunc + 1, Self::Zero) + } + } + } + + pub fn as_float(&self) -> f32 { + match self { + Self::Zero => 0.0, + Self::One => 0.25, + Self::Two => 0.5, + Self::Three => 0.75, + } + } +} + +#[test] +fn test_subpixel_bins() { + // POSITIVE TESTS + + // Maps to 0.0 + assert_eq!(SubpixelBin::new(0.0), (0, SubpixelBin::Zero)); + assert_eq!(SubpixelBin::new(0.124), (0, SubpixelBin::Zero)); + + // Maps to 0.25 + assert_eq!(SubpixelBin::new(0.125), (0, SubpixelBin::One)); + assert_eq!(SubpixelBin::new(0.25), (0, SubpixelBin::One)); + assert_eq!(SubpixelBin::new(0.374), (0, SubpixelBin::One)); + + // Maps to 0.5 + assert_eq!(SubpixelBin::new(0.375), (0, SubpixelBin::Two)); + assert_eq!(SubpixelBin::new(0.5), (0, SubpixelBin::Two)); + assert_eq!(SubpixelBin::new(0.624), (0, SubpixelBin::Two)); + + // Maps to 0.75 + assert_eq!(SubpixelBin::new(0.625), (0, SubpixelBin::Three)); + assert_eq!(SubpixelBin::new(0.75), (0, SubpixelBin::Three)); + assert_eq!(SubpixelBin::new(0.874), (0, SubpixelBin::Three)); + + // Maps to 1.0 + assert_eq!(SubpixelBin::new(0.875), (1, SubpixelBin::Zero)); + assert_eq!(SubpixelBin::new(0.999), (1, SubpixelBin::Zero)); + assert_eq!(SubpixelBin::new(1.0), (1, SubpixelBin::Zero)); + assert_eq!(SubpixelBin::new(1.124), (1, SubpixelBin::Zero)); + + // NEGATIVE TESTS + + // Maps to 0.0 + assert_eq!(SubpixelBin::new(-0.0), (0, SubpixelBin::Zero)); + assert_eq!(SubpixelBin::new(-0.124), (0, SubpixelBin::Zero)); + + // Maps to 0.25 + assert_eq!(SubpixelBin::new(-0.125), (-1, SubpixelBin::Three)); + assert_eq!(SubpixelBin::new(-0.25), (-1, SubpixelBin::Three)); + assert_eq!(SubpixelBin::new(-0.374), (-1, SubpixelBin::Three)); + + // Maps to 0.5 + assert_eq!(SubpixelBin::new(-0.375), (-1, SubpixelBin::Two)); + assert_eq!(SubpixelBin::new(-0.5), (-1, SubpixelBin::Two)); + assert_eq!(SubpixelBin::new(-0.624), (-1, SubpixelBin::Two)); + + // Maps to 0.75 + assert_eq!(SubpixelBin::new(-0.625), (-1, SubpixelBin::One)); + assert_eq!(SubpixelBin::new(-0.75), (-1, SubpixelBin::One)); + assert_eq!(SubpixelBin::new(-0.874), (-1, SubpixelBin::One)); + + // Maps to 1.0 + assert_eq!(SubpixelBin::new(-0.875), (-1, SubpixelBin::Zero)); + assert_eq!(SubpixelBin::new(-0.999), (-1, SubpixelBin::Zero)); + assert_eq!(SubpixelBin::new(-1.0), (-1, SubpixelBin::Zero)); + assert_eq!(SubpixelBin::new(-1.124), (-1, SubpixelBin::Zero)); +} diff --git a/vendor/cosmic-text/src/layout.rs b/vendor/cosmic-text/src/layout.rs new file mode 100644 index 0000000..5f7287d --- /dev/null +++ b/vendor/cosmic-text/src/layout.rs @@ -0,0 +1,148 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +use core::fmt::Display; + +#[cfg(not(feature = "std"))] +use alloc::vec::Vec; + +use crate::{math, CacheKey, CacheKeyFlags, Color}; + +/// A laid out glyph +#[derive(Clone, Debug)] +pub struct LayoutGlyph { + /// Start index of cluster in original line + pub start: usize, + /// End index of cluster in original line + pub end: usize, + /// Font size of the glyph + pub font_size: f32, + /// Line height of the glyph, will override buffer setting + pub line_height_opt: Option, + /// Font id of the glyph + pub font_id: fontdb::ID, + /// Font id of the glyph + pub glyph_id: u16, + /// X offset of hitbox + pub x: f32, + /// Y offset of hitbox + pub y: f32, + /// Width of hitbox + pub w: f32, + /// Unicode `BiDi` embedding level, character is left-to-right if `level` is divisible by 2 + pub level: unicode_bidi::Level, + /// X offset in line + /// + /// If you are dealing with physical coordinates, use [`Self::physical`] to obtain a + /// [`PhysicalGlyph`] for rendering. + /// + /// This offset is useful when you are dealing with logical units and you do not care or + /// cannot guarantee pixel grid alignment. For instance, when you want to use the glyphs + /// for vectorial text, apply linear transformations to the layout, etc. + pub x_offset: f32, + /// Y offset in line + /// + /// If you are dealing with physical coordinates, use [`Self::physical`] to obtain a + /// [`PhysicalGlyph`] for rendering. + /// + /// This offset is useful when you are dealing with logical units and you do not care or + /// cannot guarantee pixel grid alignment. For instance, when you want to use the glyphs + /// for vectorial text, apply linear transformations to the layout, etc. + pub y_offset: f32, + /// Optional color override + pub color_opt: Option, + /// Metadata from `Attrs` + pub metadata: usize, + /// [`CacheKeyFlags`] + pub cache_key_flags: CacheKeyFlags, +} + +#[derive(Clone, Debug)] +pub struct PhysicalGlyph { + /// Cache key, see [`CacheKey`] + pub cache_key: CacheKey, + /// Integer component of X offset in line + pub x: i32, + /// Integer component of Y offset in line + pub y: i32, +} + +impl LayoutGlyph { + pub fn physical(&self, offset: (f32, f32), scale: f32) -> PhysicalGlyph { + let x_offset = self.font_size * self.x_offset; + let y_offset = self.font_size * self.y_offset; + + let (cache_key, x, y) = CacheKey::new( + self.font_id, + self.glyph_id, + self.font_size * scale, + ( + (self.x + x_offset) * scale + offset.0, + math::truncf((self.y - y_offset) * scale + offset.1), // Hinting in Y axis + ), + self.cache_key_flags, + ); + + PhysicalGlyph { cache_key, x, y } + } +} + +/// A line of laid out glyphs +#[derive(Clone, Debug)] +pub struct LayoutLine { + /// Width of the line + pub w: f32, + /// Maximum ascent of the glyphs in line + pub max_ascent: f32, + /// Maximum descent of the glyphs in line + pub max_descent: f32, + /// Maximum line height of any spans in line + pub line_height_opt: Option, + /// Glyphs in line + pub glyphs: Vec, +} + +/// Wrapping mode +#[derive(Debug, Eq, PartialEq, Clone, Copy)] +pub enum Wrap { + /// No wrapping + None, + /// Wraps at a glyph level + Glyph, + /// Wraps at the word level + Word, + /// Wraps at the word level, or fallback to glyph level if a word can't fit on a line by itself + WordOrGlyph, +} + +impl Display for Wrap { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + match self { + Self::None => write!(f, "No Wrap"), + Self::Word => write!(f, "Word Wrap"), + Self::WordOrGlyph => write!(f, "Word Wrap or Character"), + Self::Glyph => write!(f, "Character"), + } + } +} + +/// Align or justify +#[derive(Debug, Eq, PartialEq, Clone, Copy)] +pub enum Align { + Left, + Right, + Center, + Justified, + End, +} + +impl Display for Align { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + match self { + Self::Left => write!(f, "Left"), + Self::Right => write!(f, "Right"), + Self::Center => write!(f, "Center"), + Self::Justified => write!(f, "Justified"), + Self::End => write!(f, "End"), + } + } +} diff --git a/vendor/cosmic-text/src/lib.rs b/vendor/cosmic-text/src/lib.rs new file mode 100644 index 0000000..53c5ea5 --- /dev/null +++ b/vendor/cosmic-text/src/lib.rs @@ -0,0 +1,150 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +//! # COSMIC Text +//! +//! This library provides advanced text handling in a generic way. It provides abstractions for +//! shaping, font discovery, font fallback, layout, rasterization, and editing. Shaping utilizes +//! rustybuzz, font discovery utilizes fontdb, and the rasterization is optional and utilizes +//! swash. The other features are developed internal to this library. +//! +//! It is recommended that you start by creating a [`FontSystem`], after which you can create a +//! [`Buffer`], provide it with some text, and then inspect the layout it produces. At this +//! point, you can use the `SwashCache` to rasterize glyphs into either images or pixels. +//! +//! ``` +//! use cosmic_text::{Attrs, Color, FontSystem, SwashCache, Buffer, Metrics, Shaping}; +//! +//! // A FontSystem provides access to detected system fonts, create one per application +//! let mut font_system = FontSystem::new(); +//! +//! // A SwashCache stores rasterized glyphs, create one per application +//! let mut swash_cache = SwashCache::new(); +//! +//! // Text metrics indicate the font size and line height of a buffer +//! let metrics = Metrics::new(14.0, 20.0); +//! +//! // A Buffer provides shaping and layout for a UTF-8 string, create one per text widget +//! let mut buffer = Buffer::new(&mut font_system, metrics); +//! +//! // Borrow buffer together with the font system for more convenient method calls +//! let mut buffer = buffer.borrow_with(&mut font_system); +//! +//! // Set a size for the text buffer, in pixels +//! buffer.set_size(Some(80.0), Some(25.0)); +//! +//! // Attributes indicate what font to choose +//! let attrs = Attrs::new(); +//! +//! // Add some text! +//! buffer.set_text("Hello, Rust! 🦀\n", &attrs, Shaping::Advanced); +//! +//! // Perform shaping as desired +//! buffer.shape_until_scroll(true); +//! +//! // Inspect the output runs +//! for run in buffer.layout_runs() { +//! for glyph in run.glyphs.iter() { +//! println!("{:#?}", glyph); +//! } +//! } +//! +//! // Create a default text color +//! let text_color = Color::rgb(0xFF, 0xFF, 0xFF); +//! +//! // Draw the buffer (for performance, instead use SwashCache directly) +//! buffer.draw(&mut swash_cache, text_color, |x, y, w, h, color| { +//! // Fill in your code here for drawing rectangles +//! }); +//! ``` + +// Not interested in these lints +#![allow(clippy::new_without_default)] +// TODO: address occurrences and then deny +// +// Overflows can produce unpredictable results and are only checked in debug builds +#![allow(clippy::arithmetic_side_effects)] +// Indexing a slice can cause panics and that is something we always want to avoid +#![allow(clippy::indexing_slicing)] +// Soundness issues +// +// Dereferencing unaligned pointers may be undefined behavior +#![deny(clippy::cast_ptr_alignment)] +// Avoid panicking in without information about the panic. Use expect +#![deny(clippy::unwrap_used)] +// Ensure all types have a debug impl +#![deny(missing_debug_implementations)] +// This is usually a serious issue - a missing import of a define where it is interpreted +// as a catch-all variable in a match, for example +#![deny(unreachable_patterns)] +// Ensure that all must_use results are used +#![deny(unused_must_use)] +// Style issues +// +// Documentation not ideal +#![warn(clippy::doc_markdown)] +// Document possible errors +#![warn(clippy::missing_errors_doc)] +// Document possible panics +#![warn(clippy::missing_panics_doc)] +// Ensure semicolons are present +#![warn(clippy::semicolon_if_nothing_returned)] +// Ensure numbers are readable +#![warn(clippy::unreadable_literal)] +#![cfg_attr(not(feature = "std"), no_std)] +extern crate alloc; + +#[cfg(not(any(feature = "std", feature = "no_std")))] +compile_error!("Either the `std` or `no_std` feature must be enabled"); + +pub use self::attrs::*; +mod attrs; + +pub use self::bidi_para::*; +mod bidi_para; + +pub use self::buffer::*; +mod buffer; + +pub use self::buffer_line::*; +mod buffer_line; + +pub use self::cached::*; +mod cached; + +pub use self::glyph_cache::*; +mod glyph_cache; + +pub use self::cursor::*; +mod cursor; + +pub use self::edit::*; +mod edit; + +pub use self::font::*; +mod font; + +pub use self::layout::*; +mod layout; + +pub use self::line_ending::*; +mod line_ending; + +pub use self::shape::*; +mod shape; + +pub use self::shape_run_cache::*; +mod shape_run_cache; + +#[cfg(feature = "swash")] +pub use self::swash::*; +#[cfg(feature = "swash")] +mod swash; + +mod math; + +type BuildHasher = core::hash::BuildHasherDefault; + +#[cfg(feature = "std")] +type HashMap = std::collections::HashMap; +#[cfg(not(feature = "std"))] +type HashMap = hashbrown::HashMap; diff --git a/vendor/cosmic-text/src/line_ending.rs b/vendor/cosmic-text/src/line_ending.rs new file mode 100644 index 0000000..13c1488 --- /dev/null +++ b/vendor/cosmic-text/src/line_ending.rs @@ -0,0 +1,98 @@ +use core::ops::Range; + +/// Line ending +#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)] +pub enum LineEnding { + /// Use `\n` for line ending (POSIX-style) + #[default] + Lf, + /// Use `\r\n` for line ending (Windows-style) + CrLf, + /// Use `\r` for line ending (many legacy systems) + Cr, + /// Use `\n\r` for line ending (some legacy systems) + LfCr, + /// No line ending + None, +} + +impl LineEnding { + /// Get the line ending as a str + pub fn as_str(&self) -> &'static str { + match self { + Self::Lf => "\n", + Self::CrLf => "\r\n", + Self::Cr => "\r", + Self::LfCr => "\n\r", + Self::None => "", + } + } +} + +/// Iterator over lines terminated by [`LineEnding`] +#[derive(Debug)] +pub struct LineIter<'a> { + string: &'a str, + start: usize, + end: usize, +} + +impl<'a> LineIter<'a> { + /// Create an iterator of lines in a string slice + pub fn new(string: &'a str) -> Self { + Self { + string, + start: 0, + end: string.len(), + } + } +} + +impl Iterator for LineIter<'_> { + type Item = (Range, LineEnding); + fn next(&mut self) -> Option { + let start = self.start; + match self.string[start..self.end].find(['\r', '\n']) { + Some(i) => { + let end = start + i; + self.start = end; + let after = &self.string[end..]; + let ending = if after.starts_with("\r\n") { + LineEnding::CrLf + } else if after.starts_with("\n\r") { + LineEnding::LfCr + } else if after.starts_with("\n") { + LineEnding::Lf + } else if after.starts_with("\r") { + LineEnding::Cr + } else { + //TODO: this should not be possible + LineEnding::None + }; + self.start += ending.as_str().len(); + Some((start..end, ending)) + } + None => { + if self.start < self.end { + self.start = self.end; + Some((start..self.end, LineEnding::None)) + } else { + None + } + } + } + } +} + +//TODO: DoubleEndedIterator + +#[test] +fn test_line_iter() { + let string = "LF\nCRLF\r\nCR\rLFCR\n\rNONE"; + let mut iter = LineIter::new(string); + assert_eq!(iter.next(), Some((0..2, LineEnding::Lf))); + assert_eq!(iter.next(), Some((3..7, LineEnding::CrLf))); + assert_eq!(iter.next(), Some((9..11, LineEnding::Cr))); + assert_eq!(iter.next(), Some((12..16, LineEnding::LfCr))); + assert_eq!(iter.next(), Some((18..22, LineEnding::None))); +} diff --git a/vendor/cosmic-text/src/math.rs b/vendor/cosmic-text/src/math.rs new file mode 100644 index 0000000..126cbf7 --- /dev/null +++ b/vendor/cosmic-text/src/math.rs @@ -0,0 +1,20 @@ +#[cfg(not(feature = "std"))] +pub use libm::{floorf, roundf, truncf}; + +#[cfg(feature = "std")] +#[inline] +pub fn floorf(x: f32) -> f32 { + x.floor() +} + +#[cfg(feature = "std")] +#[inline] +pub fn roundf(x: f32) -> f32 { + x.round() +} + +#[cfg(feature = "std")] +#[inline] +pub fn truncf(x: f32) -> f32 { + x.trunc() +} diff --git a/vendor/cosmic-text/src/shape.rs b/vendor/cosmic-text/src/shape.rs new file mode 100644 index 0000000..07b6509 --- /dev/null +++ b/vendor/cosmic-text/src/shape.rs @@ -0,0 +1,1953 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 + +#![allow(clippy::too_many_arguments)] + +#[cfg(not(feature = "std"))] +use alloc::vec::Vec; +use core::cmp::{max, min}; +use core::fmt; +use core::mem; +use core::ops::Range; +use unicode_script::{Script, UnicodeScript}; +use unicode_segmentation::UnicodeSegmentation; + +use crate::fallback::FontFallbackIter; +use crate::{ + math, Align, AttrsList, CacheKeyFlags, Color, Font, FontSystem, LayoutGlyph, LayoutLine, + Metrics, Wrap, +}; + +/// The shaping strategy of some text. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub enum Shaping { + /// Basic shaping with no font fallback. + /// + /// This shaping strategy is very cheap, but it will not display complex + /// scripts properly nor try to find missing glyphs in your system fonts. + /// + /// You should use this strategy when you have complete control of the text + /// and the font you are displaying in your application. + #[cfg(feature = "swash")] + Basic, + /// Advanced text shaping and font fallback. + /// + /// You will need to enable this strategy if the text contains a complex + /// script, the font used needs it, and/or multiple fonts in your system + /// may be needed to display all of the glyphs. + Advanced, +} + +impl Shaping { + fn run( + self, + glyphs: &mut Vec, + font_system: &mut FontSystem, + line: &str, + attrs_list: &AttrsList, + start_run: usize, + end_run: usize, + span_rtl: bool, + ) { + match self { + #[cfg(feature = "swash")] + Self::Basic => shape_skip(font_system, glyphs, line, attrs_list, start_run, end_run), + #[cfg(not(feature = "shape-run-cache"))] + Self::Advanced => shape_run( + glyphs, + font_system, + line, + attrs_list, + start_run, + end_run, + span_rtl, + ), + #[cfg(feature = "shape-run-cache")] + Self::Advanced => shape_run_cached( + glyphs, + font_system, + line, + attrs_list, + start_run, + end_run, + span_rtl, + ), + } + } +} + +/// A set of buffers containing allocations for shaped text. +#[derive(Default)] +pub struct ShapeBuffer { + /// Buffer for holding unicode text. + rustybuzz_buffer: Option, + + /// Temporary buffers for scripts. + scripts: Vec