From 2c368e89b526e761c1098c3d977c752d64986ec0 Mon Sep 17 00:00:00 2001 From: Boris Faure Date: Sat, 10 May 2014 10:20:14 +0200 Subject: [PATCH] import the great nyanology theme done by Anisse Astier Known missing: tab counter --- .gitignore | 34 +- configure.ac | 1 + data/themes/Makefile.am | 2 +- data/themes/nyanology/Makefile.am | 28 + data/themes/nyanology/README.md | 26 + data/themes/nyanology/about.edc | 208 ++ data/themes/nyanology/default.edc | 2796 +++++++++++++++++ .../images-sources/cat01-transparenttail.xcf | Bin 0 -> 63610 bytes .../nyanology/images-sources/catonly.xcf | Bin 0 -> 134969 bytes .../images-sources/star-analysis.xcf | Bin 0 -> 15622 bytes data/themes/nyanology/images-sources/star.xcf | Bin 0 -> 2375 bytes data/themes/nyanology/images/cat01.png | Bin 0 -> 10120 bytes data/themes/nyanology/images/cat02.png | Bin 0 -> 10103 bytes data/themes/nyanology/images/cat03.png | Bin 0 -> 9970 bytes data/themes/nyanology/images/cat04.png | Bin 0 -> 10110 bytes data/themes/nyanology/images/cat05.png | Bin 0 -> 10126 bytes data/themes/nyanology/images/cat06.png | Bin 0 -> 10197 bytes data/themes/nyanology/images/cat07.png | Bin 0 -> 10124 bytes data/themes/nyanology/images/cat08.png | Bin 0 -> 10128 bytes data/themes/nyanology/images/cat09.png | Bin 0 -> 10022 bytes data/themes/nyanology/images/cat10.png | Bin 0 -> 10072 bytes data/themes/nyanology/images/cat11.png | Bin 0 -> 10128 bytes data/themes/nyanology/images/cat12.png | Bin 0 -> 10176 bytes data/themes/nyanology/images/select.png | Bin 0 -> 145 bytes data/themes/nyanology/images/star_1.png | Bin 0 -> 98 bytes data/themes/nyanology/images/star_2.png | Bin 0 -> 92 bytes data/themes/nyanology/images/star_3.png | Bin 0 -> 99 bytes data/themes/nyanology/images/star_4.png | Bin 0 -> 104 bytes data/themes/nyanology/images/star_5.png | Bin 0 -> 100 bytes data/themes/nyanology/images/star_6.png | Bin 0 -> 94 bytes data/themes/nyanology/nyancursor.edc | 195 ++ data/themes/nyanology/nyanology.edc | 2450 +++++++++++++++ 32 files changed, 5708 insertions(+), 32 deletions(-) create mode 100644 data/themes/nyanology/Makefile.am create mode 100644 data/themes/nyanology/README.md create mode 100644 data/themes/nyanology/about.edc create mode 100644 data/themes/nyanology/default.edc create mode 100644 data/themes/nyanology/images-sources/cat01-transparenttail.xcf create mode 100644 data/themes/nyanology/images-sources/catonly.xcf create mode 100644 data/themes/nyanology/images-sources/star-analysis.xcf create mode 100644 data/themes/nyanology/images-sources/star.xcf create mode 100644 data/themes/nyanology/images/cat01.png create mode 100644 data/themes/nyanology/images/cat02.png create mode 100644 data/themes/nyanology/images/cat03.png create mode 100644 data/themes/nyanology/images/cat04.png create mode 100644 data/themes/nyanology/images/cat05.png create mode 100644 data/themes/nyanology/images/cat06.png create mode 100644 data/themes/nyanology/images/cat07.png create mode 100644 data/themes/nyanology/images/cat08.png create mode 100644 data/themes/nyanology/images/cat09.png create mode 100644 data/themes/nyanology/images/cat10.png create mode 100644 data/themes/nyanology/images/cat11.png create mode 100644 data/themes/nyanology/images/cat12.png create mode 100644 data/themes/nyanology/images/select.png create mode 100644 data/themes/nyanology/images/star_1.png create mode 100644 data/themes/nyanology/images/star_2.png create mode 100644 data/themes/nyanology/images/star_3.png create mode 100644 data/themes/nyanology/images/star_4.png create mode 100644 data/themes/nyanology/images/star_5.png create mode 100644 data/themes/nyanology/images/star_6.png create mode 100644 data/themes/nyanology/nyancursor.edc create mode 100644 data/themes/nyanology/nyanology.edc diff --git a/.gitignore b/.gitignore index 67184fdd..28206a84 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.o *.swo *.swp +*.edj /Makefile /Makefile.in /aclocal.m4 @@ -18,41 +19,14 @@ /terminology_config.h.in /terminology.spec /autom4te.cache/ -/data/Makefile -/data/Makefile.in -/data/desktop/Makefile -/data/desktop/Makefile.in -/data/fonts/Makefile -/data/fonts/Makefile.in -/data/icons/Makefile -/data/icons/Makefile.in -/data/backgrounds/Makefile -/data/backgrounds/Makefile.in -/data/images/Makefile -/data/images/Makefile.in -/data/themes/Makefile -/data/themes/Makefile.in -/data/themes/base16_ocean_dark.edj -/data/themes/default.edj -/data/themes/mild.edj -/data/themes/black.edj -/data/themes/solarized.edj -/data/themes/solarized_light.edj -/data/themes/mustang.edj -/data/themes/images/Makefile -/data/themes/images/Makefile.in -/data/themes/sounds/Makefile -/data/themes/sounds/Makefile.in +Makefile +Makefile.in /m4/libtool.m4 /m4/ltoptions.m4 /m4/ltsugar.m4 /m4/ltversion.m4 /m4/lt~obsolete.m4 -/src/Makefile -/src/Makefile.in /src/bin/.deps/ -/src/bin/Makefile -/src/bin/Makefile.in /src/bin/terminology /src/bin/tycat /src/bin/tyls @@ -64,8 +38,6 @@ /src/bin/*_generated.h /src/bin/lz4/.deps/ /src/bin/lz4/.dirstamp -/man/Makefile -/man/Makefile.in /pkgbuild/PKGBUILD /pkgbuild/pkg /pkgbuild/src diff --git a/configure.ac b/configure.ac index 6085b6e0..daeef630 100644 --- a/configure.ac +++ b/configure.ac @@ -88,6 +88,7 @@ data/fonts/Makefile data/themes/Makefile data/themes/images/Makefile data/themes/sounds/Makefile +data/themes/nyanology/Makefile man/Makefile pkgbuild/PKGBUILD ]) diff --git a/data/themes/Makefile.am b/data/themes/Makefile.am index a21eff20..5323e409 100644 --- a/data/themes/Makefile.am +++ b/data/themes/Makefile.am @@ -1,6 +1,6 @@ MAINTAINERCLEANFILES = Makefile.in -SUBDIRS = images sounds +SUBDIRS = images sounds nyanology EDJE_CC = @edje_cc@ EDJE_FLAGS_VERBOSE_ = diff --git a/data/themes/nyanology/Makefile.am b/data/themes/nyanology/Makefile.am new file mode 100644 index 00000000..aae8fcef --- /dev/null +++ b/data/themes/nyanology/Makefile.am @@ -0,0 +1,28 @@ +MAINTAINERCLEANFILES = Makefile.in + +SUBDIRS = + +EDJE_CC = @edje_cc@ +EDJE_FLAGS_VERBOSE_ = +EDJE_FLAGS_VERBOSE_0 = +EDJE_FLAGS_VERBOSE_1 = -v +EDJE_FLAGS = $(EDJE_FLAGS_VERBOSE_$(V)) -id $(top_srcdir)/data/themes/nyanology/images -id $(top_srcdir)/data/themes/images -fd $(top_srcdir)/data/fonts -sd $(top_srcdir)/data/themes/sounds + +filesdir = $(pkgdatadir)/themes +files_DATA = \ +nyanology.edj + +AM_V_EDJ = $(am__v_EDJ_$(V)) +am__v_EDJ_ = $(am__v_EDJ_$(AM_DEFAULT_VERBOSITY)) +am__v_EDJ_0 = @echo " EDJ " $@; + +EXTRA_DIST = \ +nyanology.edc + +nyanology.edj: Makefile nyanology.edc + $(AM_V_EDJ)$(EDJE_CC) $(EDJE_FLAGS) \ + $(top_srcdir)/data/themes/nyanology/nyanology.edc \ + $(top_builddir)/data/themes/nyanology/nyanology.edj + +clean-local: + rm -f *.edj diff --git a/data/themes/nyanology/README.md b/data/themes/nyanology/README.md new file mode 100644 index 00000000..1cb2052d --- /dev/null +++ b/data/themes/nyanology/README.md @@ -0,0 +1,26 @@ +Nyanology: having fun with edje and Terminology +========== + +A nyan cat in your term ? That's possible now ! + + +How does it look ? +-------- + +Demo video: http://www.youtube.com/watch?v=SN5stpMoVs0 + + + +What's missing ? (TODO) +-------- + - proper selection. Current one might be fun, but isn't usable + - stop hacking Terminology's about box, and add our own + - optional nyan music for the mood + + +Credits +-------- + - Anisse Astier + - Carsten "Rasterman" Haitzler and the Terminology authors + - prguitarman for the original nyan cat gif + - saraj00n for making it popular and the vocaloid music. diff --git a/data/themes/nyanology/about.edc b/data/themes/nyanology/about.edc new file mode 100644 index 00000000..f10fd69f --- /dev/null +++ b/data/themes/nyanology/about.edc @@ -0,0 +1,208 @@ +#ifndef __NYANOLOGY_ABOUT +#define __NYANOLOGY_ABOUT + +#include "nyancursor.edc" + +/* + * Most of the things concerning the about box go in here + * + */ +collections { + group { name: "nyanology/star"; +#define STAR_SIZE 40 + images { + image: "star_1.png" COMP; + image: "star_2.png" COMP; + image: "star_3.png" COMP; + image: "star_4.png" COMP; + image: "star_5.png" COMP; + image: "star_6.png" COMP; + } + parts { + part { name: "star"; + description { state: "default" 0.0; + min: STAR_SIZE STAR_SIZE; + max: STAR_SIZE STAR_SIZE; + fixed: 1 1; + fill.smooth: 0; + image.normal: "star_1.png"; + aspect: 1 1; + aspect_preference: BOTH; + align: 0 0.5; + } +#define STAR_FRAME(number) \ + description { state: "anim"#number 0.0; \ + inherit: "default"; \ + image.normal: "star_"#number".png"; \ + rel1.offset: ((6-(number))*STAR_SIZE*2) 0.0;\ + } + STAR_FRAME(1) + STAR_FRAME(2) + STAR_FRAME(3) + STAR_FRAME(4) + STAR_FRAME(5) + STAR_FRAME(6) +#undef STAR_FRAME + } + } + programs { +#define STAR_PROGRAM(number, next, wait_or_transition) \ + program { name: "anim"#number ;\ + wait_or_transition; \ + action: STATE_SET "anim"#number 0.0; \ + target: "star"; \ + after: "anim"#next; \ + } + STAR_PROGRAM(1, 2, in: FRAME_DURATION 0) +#define STAR_PROGRAM2(number, next) STAR_PROGRAM(number, next, transition: SINUSOIDAL FRAME_DURATION) + STAR_PROGRAM2(2, 3) + STAR_PROGRAM2(3, 4) + STAR_PROGRAM2(4, 5) + STAR_PROGRAM2(5, 6) + STAR_PROGRAM2(6, 1) +#undef STAR_PROGRAM2 +#undef STAR_PROGRAM + } + } +#define STAR_GROUP(number) \ + group { name: "nyanology/star"#number; \ + inherit: "nyanology/star"; \ + programs { \ + program { name: "anim"#number; \ + signal: "show"; \ + } \ + } \ + } + STAR_GROUP(1) + STAR_GROUP(2) + STAR_GROUP(3) + STAR_GROUP(4) + STAR_GROUP(5) + STAR_GROUP(6) +#undef STAR_GROUP + group { name: "nyanology/stars"; + parts{ + part { name: "starfield"; + type: BOX; + description { state: "default" 0.0; + box { layout: "vertical_homogeneous"; + padding: 0 STAR_SIZE; + } + } + box { items { +#define STAR_ITEM(number) \ + item { name: "star"#number; \ + align: 0 0.5;\ + source: "nyanology/star"#number; } + STAR_ITEM(3) + STAR_ITEM(2) + STAR_ITEM(5) + STAR_ITEM(4) + STAR_ITEM(1) + STAR_ITEM(6) +#undef STAR_ITEM + } + } + } + } + } +#undef STAR_SIZE + +////////////////////////////////////////////////////////////////////////////// + //// the about box content image + group { name: "nyanology/nyancat"; + alias: "terminology/about"; + styles { + style { name: "nyanaboutstyle"; + base: "font=Nexus font_size=10 color=#fff wrap=word"; + } + } + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 0 51 102 255; + min: 400 400; + } + } + part { name: "clip"; + type: RECT; + description { state: "default" 0.0; + min: 400 400; + } + } + part { name: "starfield"; + type: GROUP; + source: "nyanology/stars"; + description { state: "default" 0.0; + } + } + part { name: "cat"; + type: GROUP; + source: "nyanology/catcursor"; + description { state: "default" 0.0; + max: 291 121; + rel1.relative: -3.5 0 ; + map.alpha: 0; + } + } + part { name: "terminology.text"; + type: TEXTBLOCK; + clip_to: "clip"; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.0; + max: 10000 10000; + rel1 { + relative: 0.08 1.0; + } + rel2 { + relative: 0.97 1.0; + } + text { + style: "nyanaboutstyle"; + text: "Hello. This text shouldn't appear"; + min: 0 1; + } + } + description { state: "up" 0.0; + inherit: "default" 0.0; + align: 0.5 1.0; + rel1.relative: 0.08 0.0; + rel2.relative: 0.97 0.0; + } + } + } + programs { + program { name: "default"; + signal: "show"; + action: SIGNAL_EMIT "focus,in" "terminology"; + } + program { name: "begin"; + signal: "begin"; + source: "terminology"; + action: ACTION_STOP; + target: "show"; + target: "show2"; + after: "begin2"; + } + program { name: "begin2"; + action: STATE_SET "default" 0.0; + target: "terminology.text"; + after: "show"; + } + program { name: "show"; + action: STATE_SET "up" 0.0; + transition: LINEAR 15.0; + target: "terminology.text"; + after: "show2"; + } + program { name: "show2"; + action: STATE_SET "default" 0.0; + target: "terminology.text"; + after: "show"; + } + } + } +} +#endif /* __NYANOLOGY_ABOUT */ diff --git a/data/themes/nyanology/default.edc b/data/themes/nyanology/default.edc new file mode 100644 index 00000000..62b94bff --- /dev/null +++ b/data/themes/nyanology/default.edc @@ -0,0 +1,2796 @@ +collections { + +////////////////////////////////////////////////////////////////////////////// + //// the background and general container for the terminal + group { name: "terminology/background"; + images { + image: "bg_bevel.png" COMP; + image: "bg_shine.png" COMP; + image: "bg_glint.png" COMP; + image: "bg_shadow.png" COMP; + image: "bg_led_glow.png" COMP; + image: "bg_led_base.png" COMP; + image: "bg_led.png" COMP; + image: "bg_led_strobe.png" COMP; + image: "pm_shadow.png" COMP; + image: "pm_overlay.png" COMP; + image: "pm_fill.png" COMP; + } + parts { +// other signals sent not handled here +// program { name: "focus_in"; +// signal: "focus,in"; +// source: "terminology"; +// } +// program { name: "focus_out"; +// signal: "focus,out"; +// source: "terminology"; +// } + + //////////////////////////////////////////////////////////////////// + // background handling + part { name: "shadow"; + mouse_events: 0; + description { state: "default" 0.0; + image.normal: "bg_shadow.png"; + fill.smooth: 0; + visible: 0; + } + description { state: "translucent" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "base"; type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + color: 48 48 48 255; + } + description { state: "translucent" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "fade"; type: RECT; + description { state: "default" 0.0; + } + description { state: "translucent" 0.0; + inherit: "default" 0.0; + color: 255 255 255 128; + } + } + part { name: "terminology.background"; type: SWALLOW; + clip_to: "fade"; + description { state: "default" 0.0; + } + description { state: "image" 0.0; + inherit: "default" 0.0; + } + description { state: "scale" 0.0; + inherit: "default" 0.0; + } + description { state: "edje" 0.0; + inherit: "default" 0.0; + } + description { state: "movie" 0.0; + inherit: "default" 0.0; + } + } + program { name: "trans_on"; + signal: "translucent,on"; + source: "terminology"; + action: STATE_SET "translucent" 0.0; + target: "base"; + target: "shadow"; + target: "fade"; + } + program { name: "trans_off"; + signal: "translucent,off"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "base"; + target: "shadow"; + target: "fade"; + } + program { name: "media_off"; + signal: "media,off"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "terminology.background"; + } + program { name: "media_img"; + signal: "media,image"; + source: "terminology"; + action: STATE_SET "image" 0.0; + target: "terminology.background"; + } + program { name: "media_scale"; + signal: "media,scale"; + source: "terminology"; + action: STATE_SET "scale" 0.0; + target: "terminology.background"; + } + program { name: "media_edje"; + signal: "media,edje"; + source: "terminology"; + action: STATE_SET "edje" 0.0; + target: "terminology.background"; + } + program { name: "media_mov"; + signal: "media,movie"; + source: "terminology"; + action: STATE_SET "movie" 0.0; + target: "terminology.background"; + } + + //////////////////////////////////////////////////////////////////// + // actual text grid for chars, cursors, selectiond etc. goes here + part { name: "terminology.content"; type: SWALLOW; + description { state: "default" 0.0; + rel1.offset: 1 2; + rel2.offset: -2 -2; + } + } + + //////////////////////////////////////////////////////////////////// + // overlayed prettiness + part { name: "bevel"; + mouse_events: 0; + description { state: "default" 0.0; + rel1.offset: 0 0; + rel2.offset: -1 -1; + image.normal: "bg_bevel.png"; + image.border: 3 3 5 3; + image.middle: 0; + fill.smooth: 0; + visible: 1; + } + } + part { name: "glintclip"; type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + } + } + part { name: "glint"; + mouse_events: 0; + clip_to: "glintclip"; + description { state: "default" 0.0; + fixed: 1 1; + min: 79 5; + max: 79 5; + rel1 { + relative: 0.0 0.0; + offset: 0 1; + } + rel2 { + relative: 1.0 0.0; + offset: -1 1; + } + image.normal: "bg_glint.png"; + } + } + part { name: "shine"; + mouse_events: 0; + description { state: "default" 0.0; + rel1.offset: 0 1; + rel2.offset: -1 -1; + image.normal: "bg_shine.png"; + fill.smooth: 0; + align: 0.5 0.0; + aspect: (255/120) (255/120); + aspect_preference: HORIZONTAL; + } + } + + //////////////////////////////////////////////////////////////////// + // a place terminology will place an entry box for internal commands + part { name: "cmdclip"; type: RECT; + description { state: "default" 0.0; + rel1.to: "terminology.cmdbox"; + rel1.offset: -100 -100; + rel2.to: "terminology.cmdbox"; + rel2.offset: 99 99; + color: 255 255 255 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + visible: 1; + } + } + part { name: "cmdback"; type: RECT; + clip_to: "cmdclip"; + description { state: "default" 0.0; + color: 255 255 255 255; + rel1.to: "terminology.cmdbox"; + rel1.offset: -2 -2; + rel2.to: "terminology.cmdbox"; + rel2.offset: 1 1; + } + } + part { name: "terminology.cmdbox"; type: SWALLOW; + clip_to: "cmdclip"; + description { state: "default" 0.0; + fixed: 1 1; + min: 8 8; + rel1.relative: 0.0 1.0; + rel1.offset: 8 9; + rel2.offset: -9 9; + align: 0.5 0.0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + rel1.offset: 8 -9; + rel2.offset: -9 -9; + align: 0.5 1.0; + } + } + program { name: "cmdshow0"; + signal: "cmdbox,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.4; + target: "cmdclip"; + } + program { name: "cmdshow"; + signal: "cmdbox,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: SPRING 0.4 0.5 4; + target: "terminology.cmdbox"; + } + program { name: "cmdhide"; + signal: "cmdbox,hide"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: ACCELERATE 0.5; + target: "terminology.cmdbox"; + target: "cmdclip"; + } + + //////////////////////////////////////////////////////////////////// + // visual bell - spinning red siren light + part { name: "bell_glow"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + color: 255 255 255 0; + rel1.to: "bell_base"; + rel2.to: "bell_base"; + min: 1600 1600; + fill.smooth: 0; + image.normal: "bg_led_glow.png"; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { state: "done" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + min: 0 0; + } + } + part { name: "bell_base"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + color: 255 255 255 0; + min: 32 32; + max: 32 32; + rel2.offset: -1 -1; + align: 1.0 1.0; + image.normal: "bg_led_base.png"; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { name: "bell"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + color: 255 255 255 0; + rel1.to: "bell_base"; + rel2.to: "bell_base"; + image.normal: "bg_led.png"; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { name: "bell_strobe"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + color: 255 255 255 0; + rel1.to: "bell"; + rel2.to: "bell"; + image.normal: "bg_led_strobe.png"; + map { + on: 1; + smooth: 1; + rotation.center: "bell"; + } + } + description { state: "spin" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + map.rotation.z: 36.0; + } + description { state: "spin_done" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + map.rotation.z: 684.0; + } + } + program { name: "bell0"; + signal: "bell"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "bell_base"; + target: "bell"; + target: "bell_strobe"; + target: "bell_glow"; + after: "bell"; + } + program { name: "bell"; + action: STATE_SET "visible" 0.0; + target: "bell_base"; + target: "bell_glow"; + after: "bell2"; + } + program { name: "bell2"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.1; + target: "bell"; + target: "bell_glow"; + after: "bell3"; + after: "bell3.1"; + } + program { name: "bell3"; + action: STATE_SET "spin" 0.0; + transition: LINEAR 0.1; + target: "bell_strobe"; + after: "bell4.0"; + after: "bell4.1"; + after: "bell4.2"; + } + program { name: "bell3.1"; + action: STATE_SET "done" 0.0; + transition: DECELERATE 0.5; + target: "bell_glow"; + } + program { name: "bell4.0"; + action: STATE_SET "default" 0.0; + transition: ACCELERATE 1.2; + target: "bell"; + } + program { name: "bell4.1"; + action: STATE_SET "default" 0.0; + transition: ACCELERATE 1.6; + target: "bell_base"; + } + program { name: "bell4.2"; + action: STATE_SET "spin_done" 0.0; + transition: LINEAR 0.9; + target: "bell_strobe"; + } + + //////////////////////////////////////////////////////////////////// + // popup media over the terminal (until dismissed) + part { name: "popmedia_clip"; type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + color: 255 255 255 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { name: "popmedia_shadow"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel1 { + to: "terminology.popmedia"; + } + rel2 { + to: "terminology.popmedia"; + } + image.normal: "pm_shadow.png"; + image.border: 64 64 64 64; + image.border_scale_by: 0.1; + fill.smooth: 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + rel1.offset: -32 -32; + rel2.offset: 31 31; + image.border_scale_by: 1.0; + visible: 1; + } + } + part { name: "popmedia_fill"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "terminology.popmedia"; + rel2.to: "terminology.popmedia"; + image.normal: "pm_fill.png"; + fill { + size.relative: 0.0 0.0; + size.offset: 64 64; + } + } + } + part { name: "terminology.popmedia"; type: SWALLOW; + clip_to: "popmedia_clip"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.relative: 0.5 0.5; + rel2.relative: 0.5 0.5; + visible: 0; + } + description { state: "image" 0.0; + inherit: "default" 0.0; + rel1.relative: 0.1 0.1; + rel2.relative: 0.9 0.9; + visible: 1; + } + description { state: "scale" 0.0; + inherit: "default" 0.0; + rel1.relative: 0.1 0.1; + rel2.relative: 0.9 0.9; + visible: 1; + } + description { state: "edje" 0.0; + inherit: "default" 0.0; + rel1.relative: 0.1 0.1; + rel2.relative: 0.9 0.9; + visible: 1; + } + description { state: "movie" 0.0; + inherit: "default" 0.0; + rel1.relative: 0.1 0.1; + rel2.relative: 0.9 0.9; + visible: 1; + } + } + part { name: "popmedia_overlay"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "terminology.popmedia"; + rel2.to: "terminology.popmedia"; + image.normal: "pm_overlay.png"; + fill.smooth: 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "popmedia_bevel"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "terminology.popmedia"; + rel2.to: "terminology.popmedia"; + image.normal: "bg_bevel.png"; + image.border: 3 3 5 3; + image.middle: 0; + fill.smooth: 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "popmedia_glintclip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "popmedia_glint"; + mouse_events: 0; + clip_to: "popmedia_glintclip"; + description { state: "default" 0.0; + fixed: 1 1; + min: 79 5; + max: 79 5; + rel1 { + to: "terminology.popmedia"; + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + to: "terminology.popmedia"; + relative: 1.0 0.0; + offset: -1 0; + } + image.normal: "bg_glint.png"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "popmedia_shine"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "terminology.popmedia"; + rel2.to: "terminology.popmedia"; + image.normal: "bg_shine.png"; + fill.smooth: 0; + align: 0.5 0.0; + aspect: (255/120) (255/120); + aspect_preference: HORIZONTAL; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "popmedia_dismiss"; type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + fixed: 1 1; + color: 0 0 0 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + program { name: "popmedia_dismiss"; + signal: "mouse,clicked,*"; + source: "popmedia_dismiss"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.5; + target: "terminology.popmedia"; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + after: "popmedia_dismiss2"; + } + program { name: "popmedia_dismiss2"; + action: SIGNAL_EMIT "popmedia,done" "terminology"; + } + program { name: "popmedia_off"; + signal: "popmedia,off"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.2; + target: "terminology.popmedia"; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + after: "popmedia_dismiss2"; + } + program { name: "popmedia_img"; + signal: "popmedia,image"; + source: "terminology"; + action: STATE_SET "image" 0.0; + transition: DECELERATE 0.2; + target: "terminology.popmedia"; + } + program { name: "popmedia_scale"; + signal: "popmedia,scale"; + source: "terminology"; + action: STATE_SET "scale" 0.0; + transition: DECELERATE 0.2; + target: "terminology.popmedia"; + } + program { name: "popmedia_edje"; + signal: "popmedia,edje"; + source: "terminology"; + action: STATE_SET "edje" 0.0; + transition: DECELERATE 0.2; + target: "terminology.popmedia"; + } + program { name: "popmedia_mov"; + signal: "popmedia,movie"; + source: "terminology"; + action: STATE_SET "movie" 0.0; + transition: DECELERATE 0.2; + target: "terminology.popmedia"; + } + program { name: "popmedia_img2"; + signal: "popmedia,image"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.2; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + } + program { name: "popmedia_scale2"; + signal: "popmedia,scale"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.2; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + } + program { name: "popmedia_edje2"; + signal: "popmedia,edje"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.2; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + } + program { name: "popmedia_mov2"; + signal: "popmedia,movie"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.2; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + } + + //////////////////////////////////////////////////////////////////// + // overlayed options and controls + part { name: "terminology.about"; type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + min: 198 198; + max: 198 198; + align: 0.5 0.0; + visible: 0; + rel1.relative: 0.0 1.0; + rel2.relative: 1.0 1.0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + align: 0.5 0.5; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 1.0; + } + } + program { name: "ab_show"; + signal: "about,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: SPRING 1.2 2.0 6; + target: "terminology.about"; + } + program { name: "ab_hide"; + signal: "about,hide"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.6; + target: "terminology.about"; + } + + //////////////////////////////////////////////////////////////////// + // swallow to hold invisile rect to click on to dismiss things + part { name: "terminology.dismiss"; type: SWALLOW; + description { state: "default" 0.0; + } + } + + //////////////////////////////////////////////////////////////////// + // overlayed options and controls + part { name: "terminology.optdetails"; type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + min: 40 40; + align: 0.0 0.5; + visible: 0; + rel1 { + relative: 1.0 0.02; + offset: 8 8; + } + rel2 { + relative: 1.0 0.98; + offset: 8 -9; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + align: 1.0 0.5; + rel1 { + relative: 0.1 0.02; + offset: 8 8; + } + rel2 { + to_x: "terminology.options"; + relative: 0.0 0.98; + offset: -9 -9; + } + } + } + program { name: "opdt_show"; + signal: "optdetails,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.4; + target: "terminology.optdetails"; + } + program { name: "opdt_hide"; + signal: "optdetails,hide"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.2; + target: "terminology.optdetails"; + after: "opdt_hide2"; + } + program { name: "opdt_hide2"; + action: SIGNAL_EMIT "optdetails,hide,done" "terminology"; + } + + part { name: "terminology.options"; type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.0 0.5; + visible: 0; + rel1 { + relative: 1.0 0.02; + offset: 8 8; + } + rel2 { + relative: 1.0 0.98; + offset: 8 -9; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + align: 1.0 0.5; + rel1 { + offset: -9 8; + } + rel2 { + offset: -9 -9; + } + } + } + program { name: "op_show"; + signal: "options,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.4; + target: "terminology.options"; + } + program { name: "op_hide"; + signal: "options,hide"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.6; + target: "terminology.options"; + } + + part { name: "terminology.controls"; type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + min: 10 10; + align: 0.0 0.5; + visible: 0; + rel1 { + relative: 1.0 0.5; + offset: 8 8; + } + rel2 { + relative: 1.0 0.5; + offset: 8 -9; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + align: 1.0 0.5; + rel1 { + relative: 1.0 0.5; + offset: -9 8; + } + rel2 { + offset: -9 -9; + } + } + } + program { name: "ct_show"; + signal: "controls,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.3; + target: "terminology.controls"; + } + program { name: "ct_hide"; + signal: "controls,hide"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.5; + target: "terminology.controls"; + } + } + } + +////////////////////////////////////////////////////////////////////////////// + //// the selection + // selections come in 5 modes: + // + // oneline (also multiple lines but all fill the row): + // | ######### | + // + // disjoint: + // | #######| + // |## | + // + // default: + // | ###########| + // |######### | + // + // topfull: + // |##############| + // |###### | + // + // bottomfull: + // | ######| + // |##############| +#define PATCOL 100 160 255 128 +#define PATCOL2 120 180 255 144 +#define OUTCOL 120 220 255 128 +#define OUTCOL2 180 240 255 144 + + group { name: "terminology/selection"; + images { + image: "sl_stripe.png" COMP; + image: "sl_left.png" COMP; + image: "sl_right.png" COMP; + image: "sl_top.png" COMP; + image: "sl_bottom.png" COMP; + image: "sl_htop.png" COMP; + image: "sl_hbottom.png" COMP; + } + parts { + // background pattern. duplicated because clips cut out regions of + // it to see and clips don't overlap + part { name: "background_top"; + mouse_events: 0; + clip_to: "top_clip"; + description { state: "default" 0.0; + color: PATCOL; + image.normal: "sl_stripe.png"; + fill.size.relative: 0.0 0.0; + fill.size.offset: 40 40; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: PATCOL2; + } + } + part { name: "background_middle"; + mouse_events: 0; + clip_to: "middle_clip"; + description { state: "default" 0.0; + color: PATCOL; + image.normal: "sl_stripe.png"; + fill.size.relative: 0.0 0.0; + fill.size.offset: 40 40; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: PATCOL2; + } + } + part { name: "background_bottom"; + mouse_events: 0; + clip_to: "bottom_clip"; + description { state: "default" 0.0; + color: PATCOL; + image.normal: "sl_stripe.png"; + fill.size.relative: 0.0 0.0; + fill.size.offset: 40 40; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: PATCOL2; + } + } + + // clips that clip the above pattern images to occupy specific + // regions of the object (or be invisible since clip is invisible) + part { name: "top_clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "terminology.top_left"; + rel1.relative: 1.0 0.0; + rel2.to_y: "terminology.top_left"; + rel2.relative: 1.0 1.0; + } + description { state: "oneline" 0.0; + visible: 0; + } + } + part { name: "middle_clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "terminology.top_left"; + rel1.relative: 0.0 1.0; + rel2.to: "terminology.bottom_right"; + rel2.relative: 1.0 0.0; + } + description { state: "oneline" 0.0; + rel1.to: "terminology.top_left"; + rel1.relative: 1.0 0.0; + rel2.to: "terminology.bottom_right"; + rel2.relative: 0.0 1.0; + } + } + part { name: "bottom_clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to_y: "terminology.bottom_right"; + rel1.relative: 0.0 0.0; + rel2.to_x: "terminology.bottom_right"; + rel2.relative: 0.0 1.0; + } + description { state: "oneline" 0.0; + visible: 0; + } + } + + // the outline around the selection... +#define TARGETS \ +target: "top_clip"; target: "middle_clip"; target: "bottom_clip"; \ +target: "0.clip"; target: "1.clip"; target: "2.clip"; target: "3.clip"; target: "4.clip" + + part { name: "0.clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "oneline" 0.0; visible: 1; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "disjoint" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "topfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "bottomfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + } + part { name: "1.clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "oneline" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "disjoint" 0.0; visible: 1; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "topfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "bottomfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + } + part { name: "2.clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; visible: 1; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "oneline" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "disjoint" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "topfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "bottomfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + } + part { name: "3.clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "oneline" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "disjoint" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "topfull" 0.0; visible: 1; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "bottomfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + } + part { name: "4.clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "oneline" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "disjoint" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "topfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "bottomfull" 0.0; visible: 1; rel1.offset: -100 -100; rel2.offset: 101 101; } + } + + // oneline (also multiple lines but all fill the row): + // | ######### | + part { name: "0.left"; + mouse_events: 0; + clip_to: "0.clip"; + description { state: "default" 0.0; + rel1 { + to_x: "terminology.top_left"; + relative: 1.0 0.0; + offset: -1 -1; + } + rel2 { + to_x: "terminology.top_left"; + relative: 1.0 1.0; + offset: 2 0; + } + color: OUTCOL; + image.normal: "sl_left.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "0.right"; + mouse_events: 0; + clip_to: "0.clip"; + description { state: "default" 0.0; + rel1 { + to_x: "terminology.bottom_right"; + relative: 0.0 0.0; + offset: -3 -1; + } + rel2 { + to_x: "terminology.bottom_right"; + relative: 0.0 1.0; + offset: 0 0; + } + color: OUTCOL; + image.normal: "sl_right.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "0.top"; + mouse_events: 0; + clip_to: "0.clip"; + description { state: "default" 0.0; + rel1 { + to: "0.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "0.right"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + image.normal: "sl_htop.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "0.bottom"; + mouse_events: 0; + clip_to: "0.clip"; + description { state: "default" 0.0; + rel1 { + to: "0.left"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "0.right"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + image.normal: "sl_hbottom.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + program { name: "oneline"; + signal: "mode,oneline"; + source: "terminology"; + action: STATE_SET "oneline" 0.0; + TARGETS; + } + + // disjoint: + // | #######| + // |## | + part { name: "1.left"; + mouse_events: 0; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "terminology.top_left"; + relative: 1.0 0.0; + offset: -1 -1; + } + rel2 { + to: "terminology.top_left"; + relative: 1.0 1.0; + offset: 2 0; + } + color: OUTCOL; + image.normal: "sl_left.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.right"; + mouse_events: 0; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to_y: "terminology.top_left"; + relative: 1.0 0.0; + offset: -4 -1; + } + rel2 { + to_y: "terminology.top_left"; + relative: 1.0 1.0; + offset: -1 0; + } + color: OUTCOL; + image.normal: "sl_right.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.top"; + mouse_events: 0; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "1.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "1.right"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + image.normal: "sl_htop.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.bottom"; + mouse_events: 0; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "1.left"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "1.right"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + image.normal: "sl_hbottom.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.left2"; + mouse_events: 0; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to_y: "terminology.bottom_right"; + offset: -1 -1; + } + rel2 { + to_y: "terminology.bottom_right"; + relative: 0.0 1.0; + offset: 2 0; + } + color: OUTCOL; + image.normal: "sl_left.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.right2"; + mouse_events: 0; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "terminology.bottom_right"; + relative: 0.0 0.0; + offset: -3 -1; + } + rel2 { + to: "terminology.bottom_right"; + relative: 0.0 1.0; + offset: 0 0; + } + color: OUTCOL; + image.normal: "sl_right.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.top2"; + mouse_events: 0; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "1.left2"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "1.right2"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + image.normal: "sl_htop.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.bottom2"; + mouse_events: 0; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "1.left2"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "1.right2"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + image.normal: "sl_hbottom.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + program { name: "disjoint"; + signal: "mode,disjoint"; + source: "terminology"; + action: STATE_SET "disjoint" 0.0; + TARGETS; + } + + // default: + // | ###########| + // |######### | + part { name: "2.topkink"; + mouse_events: 0; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + relative: 0.0 0.0; + offset: -4 -1; + } + rel2 { + to: "top_clip"; + relative: 0.0 1.0; + offset: 2 2; + } + color: OUTCOL; + image.normal: "sl_top.png"; + image.border: 0 0 4 7; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.bottomkink"; + mouse_events: 0; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "bottom_clip"; + relative: 1.0 0.0; + offset: -3 -3; + } + rel2 { + to: "bottom_clip"; + relative: 1.0 1.0; + offset: 3 0; + } + color: OUTCOL; + image.normal: "sl_bottom.png"; + image.border: 0 0 7 4; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.left"; + mouse_events: 0; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "middle_clip"; + offset: -1 -1; + } + rel2 { + to: "bottom_clip"; + relative: 0.0 1.0; + offset: 2 0; + } + color: OUTCOL; + image.normal: "sl_left.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.right"; + mouse_events: 0; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + relative: 1.0 0.0; + offset: -3 -1; + } + rel2 { + to: "middle_clip"; + offset: 0 0; + } + color: OUTCOL; + image.normal: "sl_right.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.top"; + mouse_events: 0; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "2.topkink"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "2.right"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + image.normal: "sl_htop.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.top2"; + mouse_events: 0; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "2.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "2.topkink"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + image.normal: "sl_htop.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.bottom"; + mouse_events: 0; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "2.left"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "2.bottomkink"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + image.normal: "sl_hbottom.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.bottom2"; + mouse_events: 0; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "2.bottomkink"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "2.right"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + image.normal: "sl_hbottom.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + program { name: "multiline"; + signal: "mode,multiline"; + source: "terminology"; + action: STATE_SET "default" 0.0; + TARGETS; + } + + // topfull: + // |##############| + // |###### | + part { name: "3.bottomkink"; + mouse_events: 0; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "bottom_clip"; + relative: 1.0 0.0; + offset: -3 -3; + } + rel2 { + to: "bottom_clip"; + relative: 1.0 1.0; + offset: 3 0; + } + color: OUTCOL; + image.normal: "sl_bottom.png"; + image.border: 0 0 7 4; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "3.left"; + mouse_events: 0; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + offset: -1 -1; + } + rel2 { + to: "bottom_clip"; + relative: 0.0 1.0; + offset: 2 0; + } + color: OUTCOL; + image.normal: "sl_left.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "3.right"; + mouse_events: 0; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + relative: 1.0 0.0; + offset: -3 -1; + } + rel2 { + to: "middle_clip"; + offset: 0 0; + } + color: OUTCOL; + image.normal: "sl_right.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "3.top"; + mouse_events: 0; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "3.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "3.right"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + image.normal: "sl_htop.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "3.bottom"; + mouse_events: 0; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "3.left"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "3.bottomkink"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + image.normal: "sl_hbottom.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "3.bottom2"; + mouse_events: 0; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "3.bottomkink"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "3.right"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + image.normal: "sl_hbottom.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + program { name: "topfull"; + signal: "mode,topfull"; + source: "terminology"; + action: STATE_SET "topfull" 0.0; + TARGETS; + } + + // bottomfull: + // | ######| + // |##############| + part { name: "4.topkink"; + mouse_events: 0; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + relative: 0.0 0.0; + offset: -4 -1; + } + rel2 { + to: "top_clip"; + relative: 0.0 1.0; + offset: 2 2; + } + color: OUTCOL; + image.normal: "sl_top.png"; + image.border: 0 0 4 7; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "4.left"; + mouse_events: 0; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "middle_clip"; + offset: -1 -1; + } + rel2 { + to: "bottom_clip"; + relative: 0.0 1.0; + offset: 2 0; + } + color: OUTCOL; + image.normal: "sl_left.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "4.right"; + mouse_events: 0; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + relative: 1.0 0.0; + offset: -3 -1; + } + rel2 { + offset: 0 0; + } + color: OUTCOL; + image.normal: "sl_right.png"; + image.border: 0 0 4 4; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "4.top"; + mouse_events: 0; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "4.topkink"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "4.right"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + image.normal: "sl_htop.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "4.top2"; + mouse_events: 0; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "4.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "4.topkink"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + image.normal: "sl_htop.png"; + fill.smooth: 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "4.bottom"; + mouse_events: 0; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "4.left"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "4.right"; + relative: 1.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + image.normal: "sl_hbottom.png"; + fill.smooth: 0; + } + } + program { name: "bottomfull"; + signal: "mode,bottomfull"; + source: "terminology"; + action: STATE_SET "bottomfull" 0.0; + TARGETS; + } + +#define SELPULSE \ +target: "background_top"; \ +target: "background_middle"; \ +target: "background_bottom"; \ +target: "0.left"; \ +target: "0.right"; \ +target: "0.top"; \ +target: "0.bottom"; \ +target: "1.left"; \ +target: "1.right"; \ +target: "1.top"; \ +target: "1.bottom"; \ +target: "1.left2"; \ +target: "1.right2"; \ +target: "1.top2"; \ +target: "1.bottom2"; \ +target: "2.topkink"; \ +target: "2.bottomkink"; \ +target: "2.left"; \ +target: "2.right"; \ +target: "2.top2"; \ +target: "2.top"; \ +target: "2.bottom"; \ +target: "2.bottom2"; \ +target: "3.bottomkink"; \ +target: "3.left"; \ +target: "3.right"; \ +target: "3.top"; \ +target: "3.bottom"; \ +target: "3.bottom2"; \ +target: "4.topkink"; \ +target: "4.left"; \ +target: "4.right"; \ +target: "4.top2"; \ +target: "4.top"; \ +target: "4.bottom" + + program { name: "selpulse"; + signal: "show"; + source: ""; + action: STATE_SET "pulse" 0.0; + transition: SINUSOIDAL 0.5; + SELPULSE; + after: "selpulse2"; + } + program { name: "selpulse2"; + action: STATE_SET "default" 0.0; + transition: SINUSOIDAL 1.0; + SELPULSE; + after: "selpulse"; + } + + // top and bottom swallows used to coimmunicate via min/max size the + // size of the top and bottom lines + part { name: "terminology.top_left"; type: SWALLOW; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + visible: 0; + } + } + part { name: "terminology.bottom_right"; type: SWALLOW; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + visible: 0; + } + } + + // blinky cursors indicating you can drag the ends of the selection + part { name: "cursor.top_left"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "terminology.top_left"; + rel1.relative: 1.0 0.0; + rel2.to: "terminology.top_left"; + rel2.relative: 1.0 1.0; + rel2.offset: 0 -1; + color: 255 0 0 128; + } + } + part { name: "cursor_blink.top_left"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "cursor.top_left"; + rel2.to: "cursor.top_left"; + visible: 0; + } + description { state: "fading" 0.0; + inherit: "default" 0.0; + color: 255 0 0 255; + visible: 1; + } + description { state: "fading" 1.0; + inherit: "fading" 0.0; + color: 255 0 0 64; + rel1.offset: -5 0; + } + } + part { name: "zone.top_left"; type: RECT; + description { state: "default" 0.0; + rel1.to: "cursor.top_left"; + rel1.offset: -15 0; + rel2.to: "cursor.top_left"; + rel2.offset: 15 0; + color: 0 0 0 0; + } + program { name: "top_left.blink"; + signal: "mouse,in"; + source: "zone.top_left"; + action: STATE_SET "fading" 0.0; + target: "cursor_blink.top_left"; + after: "top_left.fade"; + } + program { name: "top_left.fade"; + action: STATE_SET "fading" 1.0; + transition: LINEAR 0.3; + target: "cursor_blink.top_left"; + after: "top_left.blink"; + } + program { name: "top_left.stop"; + signal: "mouse,out"; + source: "zone.top_left"; + action: STATE_SET "default" 0.0; + target: "cursor_blink.top_left"; + } + } + part { name: "cursor.bottom_right"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "terminology.bottom_right"; + rel1.relative: 0.0 0.0; + rel1.offset: -1 0; + rel2.to: "terminology.bottom_right"; + rel2.relative: 0.0 1.0; + rel2.offset: -1 -1; + color: 255 0 0 128; + } + } + part { name: "cursor_blink.bottom_right"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "cursor.bottom_right"; + rel2.to: "cursor.bottom_right"; + visible: 0; + } + description { state: "fading" 0.0; + inherit: "default" 0.0; + color: 255 0 0 255; + visible: 1; + } + description { state: "fading" 1.0; + inherit: "fading" 0.0; + color: 255 0 0 64; + rel2.offset: +5 0; + } + } + part { name: "zone.bottom_right"; type: RECT; + description { state: "default" 0.0; + rel1.to: "cursor.bottom_right"; + rel1.offset: -15 0; + rel2.to: "cursor.bottom_right"; + rel2.offset: 15 0; + color: 0 0 0 0; + } + program { name: "bottom_right.blink"; + signal: "mouse,in"; + source: "zone.bottom_right"; + action: STATE_SET "fading" 0.0; + target: "cursor_blink.bottom_right"; + after: "bottom_right.fade"; + } + program { name: "bottom_right.fade"; + action: STATE_SET "fading" 1.0; + transition: LINEAR 0.3; + target: "cursor_blink.bottom_right"; + after: "bottom_right.blink"; + } + program { name: "bottom_right.stop"; + signal: "mouse,out"; + source: "zone.bottom_right"; + action: STATE_SET "default" 0.0; + target: "cursor_blink.bottom_right"; + } + } + } + } + + +////////////////////////////////////////////////////////////////////////////// + //// the cursor to show where text is typed + group { name: "terminology/cursor"; + images { + image: "cr_fill.png" COMP; + image: "cr_key.png" COMP; + image: "cr_out.png" COMP; + image: "cr_pulse.png" COMP; + } + parts { + part { name: "fill"; + mouse_events: 0; + description { state: "default" 0.0; + image.normal: "cr_fill.png"; + fill { + size { + relative: 0.0 0.0; + offset: 32 32; + } + } + color: 255 255 255 80; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "key"; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { + to: "outline"; + offset: -5 -5; + } + rel2 { + to: "outline"; + offset: 4 4; + } + image { + normal: "cr_key.png"; + border: 4 4 4 4; + } + color: 255 255 255 0; + } + description { state: "on" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + description { state: "out" 0.0; + inherit: "default" 0.0; + color: 160 100 255 0; + rel1.offset: -7 -15; + rel2.offset: 6 14; + } + } + part { name: "pulse"; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { + to: "outline"; + offset: -4 -4; + } + rel2 { + to: "outline"; + offset: 3 3; + } + image { + normal: "cr_pulse.png"; + border: 4 4 4 4; + } + color: 255 255 255 0; + } + description { state: "on" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + description { state: "out" 0.0; + inherit: "default" 0.0; + color: 100 160 255 0; + rel1.offset: -8 -8; + rel2.offset: 7 7; + } + } + part { name: "outline"; + mouse_events: 0; + description { state: "default" 0.0; + image { + normal: "cr_out.png"; + border: 3 3 3 3; + } + color: 255 255 255 80; + } + description { state: "focused" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + programs { + program { name: "focus_in_noblink"; + signal: "focus,in,noblink"; + source: "terminology"; + action: STATE_SET "focused" 0.0; + target: "fill"; + target: "outline"; + } + program { name: "focus_in"; + signal: "focus,in"; + source: "terminology"; + action: STATE_SET "focused" 0.0; + target: "fill"; + target: "outline"; + after: "focus2"; + after: "pulse"; + } + program { name: "focus2"; + in: 0.5 0.0; + action: STATE_SET "default" 0.0; + target: "fill"; + target: "outline"; + after: "focus3"; + } + program { name: "focus3"; + in: 0.5 0.0; + action: STATE_SET "focused" 0.0; + target: "fill"; + target: "outline"; + after: "focus2"; + after: "pulse"; + } + program { name: "pulse"; + action: STATE_SET "on" 0.0; + target: "pulse"; + after: "pulse2"; + } + program { name: "pulse2"; + action: STATE_SET "out" 0.0; + transition: DECELERATE 0.4; + target: "pulse"; + } + program { name: "focus_out"; + signal: "focus,out"; + source: "terminology"; + action: ACTION_STOP; + target: "focus_in"; + target: "focus2"; + target: "focus3"; + target: "pulse"; + target: "pulse2"; + after: "focus_out2"; + } + program { name: "focus_out2"; + action: STATE_SET "default" 0.0; + target: "fill"; + target: "outline"; + } + program { name: "key"; + signal: "key,down"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "key"; + after: "key2"; + } + program { name: "key2"; + action: STATE_SET "on" 0.0; + target: "key"; + after: "key3"; + } + program { name: "key3"; + action: STATE_SET "out" 0.0; + transition: DECELERATE 0.3; + target: "key"; + } + } + } + } + +////////////////////////////////////////////////////////////////////////////// + //// an object overlayd on text that is a link + group { name: "terminology/link"; + images { + image: "lk_bottom.png" COMP; + image: "lk_left.png" COMP; + image: "lk_right.png" COMP; + } + parts { + part { name: "bottom"; + mouse_events: 0; + description { state: "default" 0.0; + image.normal: "lk_bottom.png"; + image.border: 9 9 0 0; + align: 0.5 1.0; + min: 20 8; + rel1.offset: -6 0; + rel1.relative: 0.0 1.0; + rel2.offset: 5 0; + color: 100 200 255 255; + fill.smooth: 0; + } + } + part { name: "l"; + mouse_events: 0; + description { state: "default" 0.0; + image.normal: "lk_left.png"; + align: 0.0 1.0; + min: 4 4; + rel1.offset: 16 -1; + rel1.relative: 0.0 1.0; + rel2.offset: 16 -1; + rel2.relative: 0.0 1.0; + color: 100 200 255 0; + } + description { state: "out" 0.0; + inherit: "default" 0.0; + min: 16 16; + rel1.offset: -10 -1; + rel2.offset: -10 -1; + color: 180 220 255 255; + } + description { state: "out2" 0.0; + inherit: "default" 0.0; + min: 32 32; + rel1.offset: -26 -1; + rel2.offset: -26 -1; + color: 100 200 255 0; + } + } + part { name: "r"; + mouse_events: 0; + description { state: "default" 0.0; + image.normal: "lk_right.png"; + align: 1.0 1.0; + min: 4 4; + rel1.offset: -15 0; + rel1.relative: 1.0 1.0; + rel2.offset: -15 0; + rel2.relative: 1.0 1.0; + color: 100 200 255 0; + } + description { state: "out" 0.0; + inherit: "default" 0.0; + min: 16 16; + rel1.offset: 9 -1; + rel2.offset: 9 -1; + color: 180 220 255 255; + } + description { state: "out2" 0.0; + inherit: "default" 0.0; + min: 32 32; + rel1.offset: 25 -1; + rel2.offset: 25 -1; + color: 100 200 255 0; + } + } + part { name: "event"; type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + programs { + program { name: "show"; + signal: "show"; + source: ""; + action: STATE_SET "out" 0.0; + transition: LINEAR 0.3; + target: "l"; + target: "r"; + after: "show2"; + } + program { name: "show2"; + action: STATE_SET "default" 0.0; + action: STATE_SET "out2" 0.0; + transition: LINEAR 0.3; + target: "l"; + target: "r"; + after: "show3"; + } + program { name: "show3"; + action: STATE_SET "default" 0.0; + target: "l"; + target: "r"; + after: "show"; + } + } + } + } + +////////////////////////////////////////////////////////////////////////////// + //// the multimedia controls + group { name: "terminology/mediabusy"; + images { + image: "media_busy_knob.png" COMP; + image: "media_busy_spinner.png" COMP; + image: "media_busy_progress.png" COMP; + } + script { + public message(Msg_Type:type, id, ...) { + if ((type == MSG_FLOAT) && (id == 1)) { + new Float:val; + val = getfarg(2); + // val 0.0 -. 1.0 percentage + custom_state(PART:"progress", "default", 0.0); + set_state_val(PART:"progress", STATE_REL2, val, 1.0); + set_state(PART:"progress", "custom", 0.0); + } + } + } + parts { + part { name: "progress_area"; type: SPACER; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel2.to_x: "knob"; + rel2.relative: 0.0 1.0; + min: 10 40; + max: 99999 40; + align: 0.0 1.0; + } + } + part { name: "progress"; + mouse_events: 0; + clip_to: "fade"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "progress_area"; + rel2.to: "progress_area"; + rel2.relative: 0.0 1.0; + color: 100 160 255 255; + image.normal: "media_busy_progress.png"; + image.border: 5 5 0 0; + min: 10 40; + align: 0.0 1.0; + } + } + part { name: "fade"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + color: 255 255 255 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { name: "knob"; + clip_to: "fade"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + image.normal: "media_busy_knob.png"; + min: 40 40; + max: 40 40; + align: 1.0 1.0; + } + } + part { name: "knob_spinner"; + clip_to: "fade"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + color: 100 160 255 255; + rel1.to: "knob"; + rel2.to: "knob"; + image.normal: "media_busy_spinner.png"; + map { + on: 1; + smooth: 1; + rotation.center: "knob"; + } + } + description { state: "spin" 0.0; + inherit: "default" 0.0; + visible: 1; + map.rotation.z: 360; + } + } + } + programs { + program { name: "busy"; + signal: "busy"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.5; + target: "fade"; + } + program { name: "spin1"; + signal: "busy"; + source: "terminology"; + action: STATE_SET "spin" 0.0; + transition: LINEAR 0.5; + target: "knob_spinner"; + after: "spin2"; + } + program { name: "spin2"; + action: STATE_SET "default" 0.0; + target: "knob_spinner"; + after: "spin1"; + } +// program { name: "downloading"; +// signal: "busy"; +// source: "terminology"; +// action: STATE_SET "default" 0.0; +// } + program { name: "done"; + signal: "done"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 1.5; + target: "fade"; + } + } + } +////////////////////////////////////////////////////////////////////////////// + //// the multimedia controls + group { name: "terminology/mediactrl"; + images { + image: "media_bg.png" COMP; + image: "media_play.png" COMP; + image: "media_stop.png" COMP; + image: "media_pause.png" COMP; + image: "media_line.png" COMP; + image: "media_knob_vol.png" COMP; + image: "media_knob_pos.png" COMP; + } + parts { + part { name: "media_clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "media_bg"; + rel2.to: "media_bg"; + } + } + part { name: "media_bg"; + clip_to: "media_clip"; + description { state: "default" 0.0; + image.normal: "media_bg.png"; + image.border: 11 11 11 11; + min: 24 24; + max: 24 24; + align: 1.0 0.0; + } + description { state: "expanded" 0.0; + inherit: "default" 0.0; + min: 216 24; + max: 216 24; + } + } + part { name: "play"; + mouse_events: 1; + repeat_events: 1; + clip_to: "media_clip"; + description { state: "default" 0.0; + image.normal: "media_pause.png"; + max: 24 24; + align: 1.0 0.0; + } + description { state: "paused" 0.0; + inherit: "default" 0.0; + image.normal: "media_play.png"; + } + } + part { name: "stop"; + mouse_events: 1; + repeat_events: 1; + clip_to: "media_clip"; + description { state: "default" 0.0; + image.normal: "media_stop.png"; + max: 24 24; + rel1.to: "play"; + rel2.to: "play"; + rel1.offset: -16 0; + rel2.offset: -16 0; + } + } + part { name: "posline"; + mouse_events: 0; + repeat_events: 1; + clip_to: "media_clip"; + description { state: "default" 0.0; + image.normal: "media_line.png"; + image.border: 15 15 0 0; + min: 90 14; + max: 90 14; + rel1.to: "stop"; + rel2.to: "stop"; + rel1.offset: -25 0; + rel2.offset: -90 0; + } + } + part { name: "terminology.posdrag"; + mouse_events: 1; + repeat_events: 1; + clip_to: "media_clip"; + dragable { + confine: "posline"; + x: 1 1 0; + y: 0 0 0; + } + description { state: "default" 0.0; + image.normal: "media_knob_pos.png"; + min: 14 14; + max: 14 14; + } + description { state: "muted" 0.0; + visible: 0; + } + } + part { name: "volline"; + mouse_events: 0; + repeat_events: 1; + clip_to: "media_clip"; + description { state: "default" 0.0; + image.normal: "media_line.png"; + image.border: 15 15 0 0; + min: 60 14; + max: 60 14; + rel1 { + to: "posline"; + offset: -25 0; + } + rel2 { + to: "posline"; + relative: 0.0 1.0; + offset: -60 0; + } + } + } + part { name: "terminology.voldrag"; type: IMAGE; + mouse_events: 1; + repeat_events: 1; + clip_to: "media_clip"; + dragable { + confine: "volline"; + x: 1 1 0; + y: 0 0 0; + } + description { state: "default" 0.0; + image.normal: "media_knob_vol.png"; + min: 14 14; + max: 14 14; + } + description { state: "muted" 0.0; + visible: 0; + } + } + } + programs { + program { name: "media_mouse_in"; + signal: "mouse,in"; + source: "media_bg"; + action: STATE_SET "expanded" 0.0; + transition: SINUSOIDAL 0.4 CURRENT; + target: "media_bg"; + } + program { name: "media_mouse_out"; + signal: "mouse,out"; + source: "media_bg"; + action: STATE_SET "default" 0.0; + transition: SINUSOIDAL 0.4 CURRENT; + target: "media_bg"; + } + program { name: "media_pause_click"; + signal: "mouse,up,*"; + source: "play"; + filter: "play" "default"; + action: SIGNAL_EMIT "pause" ""; + } + program { name: "media_play_click"; + signal: "mouse,up,1"; + source: "play"; + filter: "play" "paused"; + action: SIGNAL_EMIT "play" ""; + } + program { name: "media_stop_click"; + signal: "mouse,up,1"; + source: "stop"; + action: SIGNAL_EMIT "stop" ""; + } + program { name: "media_signal_pause"; + signal: "pause,set"; + source: "terminology"; + action: STATE_SET "paused" 0.0; + target: "play"; + } + program { name: "media_signal_play"; + signal: "play,set"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "play"; + } + program { name: "media_signal_mute"; + signal: "mute,set"; + source: "terminology"; + action: STATE_SET "muted" 0.0; + target: "terminology.voldrag"; + } + program { name: "media_signal_unmute"; + signal: "mute,unset"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "terminology.voldrag"; + } + } + } + +////////////////////////////////////////////////////////////////////////////// + //// the about box content image + group { name: "terminology/about"; + images { + image: "ab_base.png" COMP; + image: "ab_shell.png" COMP; + } + styles { + style { name: "aboutstyle"; + base: "font=Sans font_size=8 color=#3f1 style=glow glow2_color=#3f13 glow_color=#3f11 wrap=word"; + tag: "b" "+ color=#8f8 glow2_color=#3f15 glow_color=#3f12"; + } + } + parts { + part { name: "base"; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { + relative: (39/198) (27/198); + to: "shell"; + } + rel2 { + relative: (151/198) (115/198); + to: "shell"; + } + image.normal: "ab_base.png"; + } + } + part { name: "baseclip"; type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + rel1.to: "base"; + rel2.to: "base"; + } + } + part { name: "terminology.text"; type: TEXTBLOCK; + clip_to: "baseclip"; + mouse_events: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.5 0.0; + max: 10000 10000; + rel1 { + to: "base"; + relative: 0.08 1.0; + } + rel2 { + to: "base"; + relative: 0.97 1.0; + } + text { + style: "aboutstyle"; + text: "Hello world.
This is Terminology, your friendly neighbourhood terminal.

This needs more text to test vertical scrolling to see if the animation works right.
I hope this will be enough now."; + min: 0 1; + } + } + description { state: "up" 0.0; + inherit: "default" 0.0; + align: 0.5 1.0; + rel1.relative: 0.08 0.0; + rel2.relative: 0.97 0.0; + } + } + part { name: "shell"; + description { state: "default" 0.0; + max: 198 198; + aspect: 1.0 1.0; + aspect_preference: BOTH; + image.normal: "ab_shell.png"; + } + } + } + programs { + program { name: "begin"; + signal: "begin"; + source: "terminology"; + action: ACTION_STOP; + target: "show"; + target: "show2"; + after: "begin2"; + } + program { name: "begin2"; + action: STATE_SET "default" 0.0; + target: "terminology.text"; + after: "show"; + } + program { name: "show"; + action: STATE_SET "up" 0.0; + transition: LINEAR 60.0; + target: "terminology.text"; + after: "show2"; + } + program { name: "show2"; + action: STATE_SET "default" 0.0; + target: "terminology.text"; + after: "show"; + } + } + } + +////////////////////////////////////////////////////////////////////////////// + //// used in the font selection dialog to give a base for black text + //// previews so they are always visible + group { name: "terminology/fontpreview"; + images { + image: "fn_shadow.png" COMP; + } + parts { + part { name: "shadow"; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { + offset: -2 -1; + to: "base"; + } + rel2 { + offset: 1 2; + to: "base"; + } + image { + normal: "fn_shadow.png"; + border: 5 5 5 5; + } + fill.smooth: 0; + } + } + part { name: "base"; type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + color: 255 255 255 255; + rel1.offset: 2 2; + rel2.offset: -3 -3; + } + } + part { name: "clip"; type: RECT; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + color: 255 255 255 255; + } + } + part { name: "terminology.text.preview"; type: SWALLOW; + clip_to: "clip"; + description { state: "default" 0.0; + rel1 { + to: "base"; + offset: 1 1; + } + rel2 { + to: "base"; + offset: -2 -2; + } + } + } + } + } +} diff --git a/data/themes/nyanology/images-sources/cat01-transparenttail.xcf b/data/themes/nyanology/images-sources/cat01-transparenttail.xcf new file mode 100644 index 0000000000000000000000000000000000000000..29e0156fed55a82f37f9eca802f7233b54640870 GIT binary patch literal 63610 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≀3C(D-zyW{0H_kDdOXl-}6iUKd}D7 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 literal 0 HcmV?d00001 diff --git a/data/themes/nyanology/images-sources/star-analysis.xcf b/data/themes/nyanology/images-sources/star-analysis.xcf new file mode 100644 index 0000000000000000000000000000000000000000..734860911ccb12638722ab020a981f77811e673c GIT binary patch literal 15622 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 OhJ0zVTt_bFE%6_-7ZNZ4 literal 0 HcmV?d00001 diff --git a/data/themes/nyanology/images-sources/star.xcf b/data/themes/nyanology/images-sources/star.xcf new file mode 100644 index 0000000000000000000000000000000000000000..bce38840cc28be85736f5909f597c38577214d68 GIT binary patch literal 2375 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

L^xCaSi2EtlZ%n)4c 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 literal 0 HcmV?d00001 diff --git a/data/themes/nyanology/images/cat03.png b/data/themes/nyanology/images/cat03.png new file mode 100644 index 0000000000000000000000000000000000000000..e8fed3dcefee280d0101ff0cf9ec6ddcc18b3fde GIT binary patch literal 9970 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 literal 0 HcmV?d00001 diff --git a/data/themes/nyanology/images/cat04.png b/data/themes/nyanology/images/cat04.png new file mode 100644 index 0000000000000000000000000000000000000000..bf9f80c94b82821f330bb3386fd0961d59e272ad GIT binary patch literal 10110 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 literal 0 HcmV?d00001 diff --git a/data/themes/nyanology/images/cat05.png b/data/themes/nyanology/images/cat05.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b334806830776c8af57c9b30fbe3a33b089e09 GIT binary patch literal 10126 zcmV;9Cvn(`P)PyA07*naRCwC$T|2LB$x*Ia_ZY?#U<>~VL}X!$kkGM(Y)1r6xK}gRk{uusfrJDB z0kTK7!81H$iO3QXxig5c#26>YBn12cKu915b9WK!^{B4?>e2h0Gjq<~-O|-Pd+oJ) zt<}5x>#DC_M6=B{+ibJVHrs5o%{JR?v&}Z!Y_rWa+ibJVHrs5o%{JS0Hhzds6SD;UwAV4q{`Yp=Uca7mM?_-!6A|XE5AeM`H=WGP zQaNv~`RCb|hg?Hy*2p?2Leb>eCbOEbW-tXVlzx`lKB)U_`+n||8owXPQ1KeD`x7F?*U9_|dWE@;D2xjWa zm5IRV_*En)4IB~RRDR1y$^|MR0+|hrBFPC!VH2>XWOZN3N}w9&?ead5Fa($58ogM= zRekV8mhQT1lCTgEq4CiYQ?%eCRkI4B>vMVPT%`V4DGaHNe91G;_B^M!ynOjpI-Tz5 zbh;yvyOkWjTS@Hm=Q9cZf{2#=Z%v|~P8+GN3HFT~UlhTb6&u>ZdrMdPz zTNg!|AICL8-=C+6_XE&ca(?TBOrNCs)C+xS7U)Lc_s7V+#-4K=$JZnEY%MwY8CC7gPyU>f1tdVK7H3T5s#N-q6RE!VN}el#EzX3Dh;2lGBdeV>YS#uf+qqh0 zIr`6ekdejQt9#NM?+IXDrMn6@#N|bO^e>@`|x7 zUj}&0*=~Zf>L;6!2;zSv;F=JBRG&~9-0UR9(u*f~5s>64J>E-^)JSc1AzL79pDW^m z#sC7Hhu*UasF^iy6u_MCtLj~mJ7jlLtoJe7Re%+mcviCVcQ=n%r%r-Gi`Dn9qDK1B zfaNU`3m6`-YM|-QVOkamq(v-kc|g+lUvo3SYBh((3OqKFE@lsmqI*V?CvZy$0L!X+ zChSd8YIp2jHEb6khr6J^kQwZ#y($&^2>B{Rw$mSKASdtQNi>p5 zBuGW9s7eu7`{&k4^UTq+@{D6{BogqSh^Lw=;0?FC5;s&e_xH}7obG}#2P9PSz(#7K zN7~o@v(6+vG8TB_6^|c>99S#GY=FF^&+Xmcf~@y!8QB2-C z$aR|?briz(_lGaZ0k7+G?7dI>!UsdA%Rj&0PXSE2Ke;hpAjpVBD%5@almsqC%!kaWg(11Ri`t|cl6-Xp4=0J>mGS2xF5^%Gti^{m1{Mc(ES5VTwrr_xYsrMrBx zw*FmeL>382>xhuHTvx9ai#rCDxI6S5j>ovWv3L>|%AA1Q6E5}`=c=l~0hehFJ5#c{ zDX_u|VKmk*S7~x-i3ySC{UWJI3heM~oPb~c%=vprc^qQ5gE&YTfm;t?JOs8HoOECM zT6KREVBGptX}&7?%`u>R1|6P~)l>s{m#k`>N+v;7T@Ac*>%h?VFNIwigOGI!^+B^& z*G8`K)VoVmw#t|y*N@Tg8UT7WFj<;Sg5^;EN>;)sa|ahUgxRjN-6?AqHGjtwxn1<{ zoS7!fF07MR)}0VR3h5nNO>BYIK-~xEZ(Se~OzrLSA9f2@Xj!NUw~5EV4?FR!cNHgB z4-7Y;__pW&1p5T%_e1hlVaji)(5zEJww(}|%a(aXNsOF8jz z&uzjxH|NOg3kDp}po3>=IHl;Q34P(X@cT;v%x1e8&MJ52j2C5hP3W<#&XGRd3zMjc zeW(y&S{d`bATG@fiRlUUdRiNQq4z4AIQ-z4^C-5UdZ1t|bM{`sxjL&YdTk$-BzlQ- z6%pkX@R};&&2m=RkMC#nlw=pJoW}>yi1DLgiJeES$sci39J>^3(v;?`vTzfW4#gk8 zHoh`;OpV{;*C|SU4983Xj`Iw? zRHcC~q!OxtGh+mAxZTn3ung0Tw?AgTXJ1o6%uV08BH(*M3c|D39v$wn3?IoD+UY6?u_C{X>x#oryih%7l2ZG z4xY%oTOZ@=IaSBN0yo!@_1G56iM0T<*)DR68wPf=v3eKeweq;6?s{i)N!31ZJ+@l; zmcZ7kc7WSqS@V-WUeX@QV)vMqzmax@R>B4B%wAHsD6;_@2?~?2oy9-U|vxIOq0ipyI@s#Qe4#{Oy5I#m!;1 zo93)qE1?%}h6_fx02eI`EnRe=Cb6VI6i8Lvgz0$h2u&!DYZ)BivLrAH6tf=eQkCV6 zMgqcPNvZEA?vG3NQ@@E&-I&wQsp~BCG26Ysig(UR(#(u#r|UtBNeUj!ij3EmwRMqp zUhRkvK@y8u)VuVk`-2NzFIW!1dn{fKWhN+JUzLKq{t!X#1ut7ptB|$9RWmn0E&1kE zEXmUXIKk@JGB-ISkt7@di9jO(tWH&M)J4k`X^(8C0@I_t>q z&GNW(-|rIFLL^(b&3?>~tyC^?t5YU|3|p{!?Ii|e#r z=|VKDB0jmsug0)b-hZ}&;mCvYV}e!HeC!dSfYc7agHQ=8a9&jEssWHyvT7`l$fZF6 zQS%;FvRW;Z&~J(fhqrLSBfAjbyZdYDYmhb2j*<9&W?kx+2(SX*IA&q)1DRdm-Dd!XYp`Z%39*giOMjnM6?D@Q``ngS zWf|U+-J&2-WgExEWb#)x2v$i5Myon`=3|fi?BmbEox3|8_zfX~{UUwYBeL6&oT%?s zs*{RDQjostRd0L%GP$J&D(N%;g<>sTse_5u{c0BSN@;zrq9>3?6s`p$PtPw-~7AA;! z3%$W1H=XN3R4)*0c<|Viq;9OCa2s;`tbDQiOE%m_3ZBNBnv(HR74kPS%Qxq=mc<_- z5Lslk23r1zNKQ+rMs>Vf2F4&>(G7u7$G>jhlZEKCG%<Z`u5?VE^RyZjZl z0*jjoR2*)q=nVYvH)Q#H|NZyx-3O6lCH!QFbU5ZC@A>N0!(wdQv)FzI2odcO`DTAf%qM+{MSpyMI#+m272g>5a zac-cR@q6|eS*pLEbiweK%o%qBMN<8gv~Ccrjs$er&&n%O$qrBP$dd?32Av8s8p@)b zLV+~LAQXsvlRtxJK?L+pcvnC&0{<*isFj#pZm$q`hzmt%jTYDBz$5}`Sx27|{3t7h@-D$=O4 zq?de;;&{Ofd@k-otFGh+R&Np@%NRh~KB55bk^Zdpuo`=qs=pM+DSB$Oc3+TmoD^^& zAg(xmYSq>LPxMe^`^Q}_Yqm$=tf1-uRWG^!r0J|!LCzxU^FtW`sXieQEj{|Y@@}hJi_&JGnK6rBS}87?r~Ubq!J5w$c@2TUUPy! zw+KQ%D@2&1xsc7XSwjAH!7AL91uUpS1iVzg<9v7b7IO5=c5-)_2|O?a^$SO($;fpf zl9VD)^3*=)jv)DOn$i%)~A6WYK&=Ug&ix7e2dyu25 z65~;5kOl-V6sGO(v!6ZpBhq@4+t2ph_iAb;E>KHHzxaihG_aTcbUzztg|UH`Hzd(N zTxFXl){qr$G_l`(@ApK(3i;fK7z^R(gaV*}lJA`suo%U62}l9Yg2Lj1g*LOx67y}@ z_rqXH_<0&WOIb2~pa5a`=pr9t50xerK_xHgO#lO z=Rp!z&r|8o%oUdrB#pasCaY>w$%{4H^?}tsQBh@-NNi_ceUro`K{%ew_abKt>L`g5 zY9be^mE>ed5dV3!&r{}b+JX#r7wF%?Q_-w?SW`jI&s&qwLf)}j-Rtr#~wl51_RziybD+HpbOnfVKpF?HZYi@ure=ZigPk^)HYT2lg%YwL^)ix8Y zxAn1L+3}3qOalAViE2h&+}=}2%749szHq!HOb1xZo* zn7xnv4gph`gI(NGZeBqM`z}Q%)9vh0Ak z_s2NSkyqg^8I#Cm!K!xl9IJ9dj;B$}JYWbuBhTst*Vi3q><-g}zxM$*WBTtxW0-~Dd4shD8o{ruOjU%NaO zsvTIDNZn1%f}726HQOzMm0ieN<~<7r(ghf&Dxa%XX`M0{{Q7m>x=g=;Dr+M z5fOj*3Lc-(PoCAU0gF7z9#R8Cmlw~y!jsCG#;V#(j_dls z3i3aks45P*YZqeYvCSS|Lp}K{fyCB<4y)KYK0H^&0~QM=Ncu5qU|}(wLCLCm9A+UE z7ROI4;(t)a1A(Q*`mhx*b})NCnZtm5x%PadpBxCTxvfQ^cS z_$?4hVu6xi33A^r%7PweeARjZ1}HXuRuYE;x#zHwSS2(Tuy_*V2oI#xL9e7$=f7nE z4G`q1uT@T{GqNHxT^2&)84hN!tV9vDghq<#1h z&cXl}ujld*#2~tUbozXb%H6Z0o^Hq4&2N>Jf15Fbw*yvi0j&RP4{_pRAoD=;VguD$ zC;*BDjL7|gd!oMq1*Sy+AtVlK`jtfay)%3_-D&w9vTRAIn z+zz&Sf&vW#+J(V0c1#zBTLddBS+Qg71G`^TaW?=Kue8@88Pu(6mIuO%4tbTg4x(+= zh2Wk+ykDqZMq|)DS0a67Aj6T0XOCyW(v8Fy2QpU*z(!@|$pJ1juV#gt+X1VX$8i>9 zWq0%ZhuFFXXcdoxdVP||-ceSXY6Bl@t>ZqZIRcXAJ)|X(r64(xeSap-a=ugeUf3y9 zGWE?mb_PJT|0W3NV$0w~2^2?4#ZSrV2HG8}Vk176u4DFOY_f>4D0TN0S`+Z0Yd4UQ zg0&5~E^I(2g_uDNrdG03pI58qMvU*4JO+}g_^Ph!!7c=Rw!HH{|358gO7}ad-0Ax> z_sICuw^~VwndSBC*Bdx>(v>5b*>pb<_y~}$P)`2H=jvHD=8yLkUcDL%9s0PRuK-qd zp%N!*N4H!5`;Y%#M6|=sIrv#bIoSxw={(^#D8n z7U3RTkXd@q7Yrw+>_EaP2(~E0>Pzv?*OC?PcM-(7ai50Sb6tpB8o+n8;Bc*mGslY* z2XO1+5l%WEA-*8x3;EzSln&e53?pmcl(241vTD^EV(Vwc@q+49NF6fcNktN5SP;XB zt!6n1w(W2MYe{Z9Py2qgR<{$I;u5Z3l)#Liy&8>t#86rpqy};+g>nl*Jg}f;APvlA zO{$U;C7?YM@J+DlcVJ7fo4{imh#J?ZqtrCLEwYUy5;o-O%1yDe$Rr9}_9Qv&RqtB^ zTh*@bw@Z=i0#Ri#BUP~Vv*J!VLZF|i&G0vu7Vtf%(d_%y&q_TrhglTT{98uC8mZnq z+m*Dt|M!ErLyn;;tX7Rqv#w$S73Yhmpb5bC9zum^~_yC3}D5vn{g=5gSX*cKjwJ9(fGZQ z^GDzPk|3sq4-4I)Rte;kh~tn4D7A2X*JE!|Cu(57c%{9slB}{FoKHGka5gT%Z|v1S%X#H$;wp7AWmEzuAccTUs=voXVqXu4Z9n7}isVYSP*@;+&C8SyvDOAzeCvLq(ssRc-tBguknW~0( zAa$-vh!=x*qegPP(RkN-fM=y&=n{dmhxTDhm#L`MWnmKQH{9+zKv;bjf|#3>zY*&j zBR&z@sW8sDcF{IO^y<1$;A}YAsWq>(JCEu`4K0&`T{JG@jkJ|=10d?!dX;r&O1;qWp%FdYwJ5u+&->O<4@oFS46c#f|jz3l(m-O=(V0DncLQ-6OPJX97 zQpSn(I~Km>g%wxn)jeELVz=n)$f2L zEpQ6Z|a*Qk_O@v`t!sGBpwJ(_2L0LUd89ESaVaF zDBplh?}Z%dJq)-P#o^1t90YzB40IJ9CNlS z0jq?lZln{5Q_Wicq_TP3nS`Ecznkb+TdPt-lKoWCL|1ososM z=AY^oIOJ2TnwY79-D2k5dz}$aq!+jL)zVxJQ=8GDnjN9(8$7o)CS>Yb0Srn&==oS_ zV}{MT(DPVY738Wl&pL|E6fv{4) zC-UbtI8K}HyY{6YA89AI0Jd}B;7VYhj_>xkIH84PHMbwfm}IY8wW#w+J%?yDW-Tgs zNGHk+N&1-%^=AiyAAMzy&0Eky=h&xfwF;ju{0o1+gfd#5Yn%gC)FuxUr1tn@l zCd4Dpz03<$7m}$K-WphmlqQ78Sjlb_gV)CC4FG`yIwiLU%|imeh5!HuJV``BR5R&? zy{UeRH)5+Q@_4|q7aIt9sK7(Kmb;3v`U%Fod4D5WReaR)AKV2hcC)~Gb0avHXqJw@ zU9dv2ZNR0Vl5;4Mva&1=*uhj6!Q^_lg=6Y(qzLf0oa#UsN_(zrMcqH@a&hyJmZZm% z{{5TxQPP=>A*^N%^;JNQ+zvR|w5Bz1f)$+XazXeA+&!}lo*F37#PxRl%+luOSdaS% zbH#U3nkLzsWPZbL8$;)TXX(IH#P@|m;X-zdkvF?l`OxQ>VDH8`D_sC=^VPUTG|#l(TnZ# zdOfcR{1)0&v9?cM``Y^8{hmr?lkMEYqPLLjYTdF<_eGtr`_t->evZarR8$y_G61lW zLo5-#^Kz!Ij zpe~LiBIK$>)fpFj&gx2@^vk6rs1Xp9gIh2bl82{=syOM{WDu*QlFY8;i{cW#pkGWD+ zCRy1;eKWV!ErS(n-7*&mDyLGT?78&o};8_)4Dg5n!W*o#@0wBV~ zFa$ygfYe$Ad-br9;36yHmhu?oh4%m@QTNic$Ld2+I$F*L378}A^FRI;o=BRK2uGxZ}!yxlDLEf3ZAzV|&2`lx`Ayz|aGYys@W zZ@$xAAIB4FmAAD-Zhsf9e-iC6WAdI*d-UI6X`=p*-P&736@Qq9bQeFD70k7M;h;pI z!9WrbC&yNrI>oS0NL7?dmI*d$XxGQ~j0u1>9PBTy3`r%Fb~G?}(va7`_@O{f>GTkE#Q0VPAOgMN&0w@@V9!}G^%hET z`X(*?Mb&6LwY2yfxau1vm5)82D+FTOXQW0(E)U)_mWry*c70$4)Fwu*3sG9%PP%c_ zJ~Dn+jOxRQBRL&@RubIvq77Updk_XMZe z8nCj~Dv_RdLFsN2$%?4Wvm^}{LohawtQ6o`wH(!lffW#g0k;_lbU(n)N`RW$eNNOs za{BPIdMa-i|7#rI^%usHK}qFmoVPRbxJ< zBz4PbAe&t2Yj_7Ii_1$e_q{?h%^o1nT@6g6ChgQJ*>xz~21-Pu>YogG ztPiV!fm9SG%=0oZWP!~I&~S3^2~s!Q=8u1)?bDzB^#57Viu|C^cOQN9(WmacTQ19+ zOj0V8`+Dm0SU!QZD%XY&%UrgzRZ_k@7Ee?GDg;s$Np7|)R0C(bZJgDR4M9vdJu5ZTb1`HS6dyPHEWC94V$J+`{#dC^aRnr%u}6Ql%5 wOxn@YBeWj_xGMfxlb@Pxw%KNz?a8PyA07*naRCwC$T|KXD$x*G^?;6Hqj4gfzA~RzV5<0e!?TEk$@9K>$J3%4>2?+uM zgl6={c!m#IBC>=;?hGOuvgX&h`~yVwRwv_BdwQKX2RZ@#{W!L?os^5nkv)4|Lv zmHplK5U{(XxJWPQTr5~lX59zY7y-EDb9pyFVgKtR)PW(-ga20y!#tq!QyGpO~X z#m}>S-pIQ0z)xFDdVjsIJy*6r02*c%yKMuh?Yr%J4RCY%-d4MN<))>bAmiYIK`?Vy zuFM2ZpI^mt(!db`PUW|ZtX$v{B9Pg@D6*W86*d8DT2>FWtOUAo-do-W5{BS%9HS?T zxULT#$kH8mO%@gcBJ_N;#S~5W$knWZ=z3kAI~Tcs)(S&zBVTfjvpvlrF3+ETold7a zI-TxFkca58e;?lZ~sSKtLbK{t>|L=QqSRtW|N9p$7iloMBvlH0@VS8N> z7c>SCXg_qHRY1+6d7}X4d|!3%irgW)FU5Kvvt0#Pp@C;DEC2205$n`hP-wFH`YLLy z9}QUEB(Z?u0jma@ejlb~k-%ES)|Lk(eg8F?0d}i73|8Q0Bk5%Jz$iLrWO)KvLI7CS z)g#Ahk0dA4%DNe_s)VpNOR0Th_pV_(0XcjN`V*PK8?|?(VvUgRLS%3H!wux*UObCN zQi}w+h!s~U0&9QYI%%E>JuBBZCL@u6|3p01bOCR;-IchZYPi1_cXIj`j5#2oiUJ$C zi5_WR*JqtcdK4`1o>%<*IOM=uD`o@aCB1I%{1#-rYs>g9kAxTDUt$&k{eAS$noJia z+CZ***-=L!Y@a`TP7ZiopRo5K?X3@nc9);L-wy#yy1#bMc!3}z61h+h(J2X>1ea)K zV&3Sm2J^HODS>I-s_=kN1}!Ou?ifx{>VeOD-jS6QaaQ2?Jh#sU!8oAOj~4+Jx6tIP zZp;nD1C$%LtDV%I#U#UE(@Gbrt{S!|yvZNCw)xv5=9b8{iVz=`S%%0BL&1XxM0>J7 zelDIHXhG6>z8gScHM+K_Ab5|sb^_>vXWM58lGYI+ZMm-AEf)6~RPyf7bvTM~_r>B_Sg3LWk|$iO80V_1!2y?P13S~Q zx+$>26Ja#hE_Z2iYl#Vw=lvw9SPJa$Y@C2!e$DxPNclO$vV%BD8G&05U_1o28k}@r z`dD>-lwjOysx)7f{N@NCBbsIf2Am4RJntTFNE2ywB4y_7d4;bf!t2| z7iXpkvkU9smGw=CAcgcBTMcZ1(Lmh?=x?1M5)AF_??37$uF$ejlWr3~13&G=i{4d4 zt{xa}K=Buz{t5O8?qk~zfu-(4gN^>YcKpJxn$Ws`u9i&b!{;1uq4plC#Qb>sz=^6o zfBx`(M*A3PA3A*xMhTye8`$$0b(bw2Xzako00Hg0S>t6+kQPcGdpa?UBzo01dn+g2 z?#U*+eRGb?-eAB14GKI|Q z&997wsj*xl(^+M|<$k>^&9i~$vu@z=OzJh%JC_q@Da6+vk?j+-ZpN~zwmd}!za0+% z%3Kx=EZ+XoA8X6+5+_!Kwh+W{R+553W^v+$7jicSk>DfJ0sI}-Iz^?A;WJZ!<6J{; zRcW9Lse~%v%pAcRZg=#%EJV^8<66Nk>%`uP_h#5Ipw)qkMnZyIfpyz?LP~SYxxWRx z-Ivs5g1m@5zcBsrcAe`)6j_K)+dZ}5(t=^{A_;PPG?6V!Xe~(>HBTXJ1o7ZSZJGMZorh+Ydmi|?IFxWC62{r;0R21hQO9}le1AZBJd@QT4i zvTsIltTZ`5z;h4K#0x;F-3LDm-lLE4@tnG2V1k?D$SStQa$+q2ZLy0y;)a2pY_8q~ zb*(%usXN|zxuk9%I37o>{77IMRXZlf5n1z#KVH&aWyJ2&Xjd2|T)>;zD+(7?HsIph zE+Kr$6*o8&ffJ65ix!MJ-y-P*bjfrtK*4QVNeBof*Uo^Q<=2G$XKt_ef`ucTeS0@h zabiqjep?PcdmvPiIm~v`oK+ho^zzN{f)OsjMH53?7agccY$*^0RuwmCI-VS%N#$`P zg9BWa1VMpf)q~xtvb@nqLU?Q`_5H;Cap`>OHxa4_bNVrLoeO=;_8_q0owJg(G9!A^ z^`ONh1qHJr<8@?hour+r9q}Q^Vlk6?w;pwWaH8u8%K>2oQTlJTBT!cUcdn};rS1@&(k+3qb6k=I9??P}W{94NM)Rixf-23%Bp z@1jLb1EL+}or$r|I`VsqJTBe$yT!E-$(C-jpIdMtyi8XVMdvuPHkBnfKxFs*C)ouh zacS$euDl(pdd9W9POC~6qG1>DQ*9{n_x}6uKe!K~*D6W~FJ$CC@9!V4u;1N4CkU|O zg-M$?sskQ`maqc*MN3^Z0J2(EO#~828Wa#U_hBuoH8KfxQ%pF$g$s)8LW1wE*V4zJ zXrO&Y;_J-1(k~HU1==`fVeS)|UEt${OSH|8&fR9E(8tPMyb?E1hu14y0x0dlV)!81 zBSCP`d&*}0cJ3?-hP;xb8xyoat9#eI-%vWqUV;R=MYZ0 zfzLzAN_F(xplG2y>^GY2DT9^dMekT*z5xNjP>B#RYIhWs0^qih)Lyy?<7L9?#5mUg zssMPkNLvpw6;6n49$)(Vw636Ame}XEyj7OrIoVwlBwE?Vk(f;W>IT6oNx^7cCog>L zk)M73S@`DewgX`dfpFR2Vk}*+U}Im}1vEd$m_MD!*EHL4E<(rX&NDJa+66X={4 z*Q-_)9b2j@PG)vj*75kgFk`?xLkm!5l^RoX-LGqHr=BdjP0j3XIzRO?#g#M5m?6N$j41-mmJu>hs#ZiRfD{e}$vK;#L9`hnp&jfp4JQ z5RqQttlHIW&cg)(Kvt}u{i+F}Dlp85F!I{SNKl&VgYBjIgtNewQ=mC*>2z9eV6S+L^3oy#~X|lgPLfdcan-(Jn$%h0^umE;G&4+ zL?U}j3jQ7QmF4opXz8t4kNxH?t7DmXC$%9|TT5y|l--Z=8`N2&&h5Vit)8pB{W z!nuY0UeWnpPq1nx-|ixfiX{V?f?P1TLh!2epdRWap zJa7B_=lzryk(L<$`OiIz$%3c_GylF6a3LVB2tT#!YX2vCEVBKRUM_34SHM|8*8#d- z^6){^MX`dKMJzFZA&X+`6B5zVb5Hvt5fIHpJkcmHIfS@%T{*aa@7W#a=Yrsq*@936 zq8>0?5RA$i^VzE6ZYg+=UZ}pD<`VKZ4pv0OnYO8#A)oLtEcw7=$pHbSnQ&pnovzww zaaA7S`o5XVR?3kipIFBnmg0`~W!>@8?%s0mmC`(wh#=HiA;KJug>0P7CFE}xtirdl zfC*K|fS2lboWI?@i5y+C9o(HF+XF+ee&MJ!8A%r+ODO^+&vk^$VoCnncrpe_mprq4 z6;`pM8eUP0uAE;T0lYy}F_J)_rD!m#|%o`qA0V(it0=U4X9$X`Eem7EPRhbtCN#@JOp0 zC>1U%Dla=Qh-~x_t!^_EV&9GrB7J-6i2;K}h(Pf@$Wc{^@hoR?2g)S|Ht+t=pFy5p zLbfBT&MO+&TYtKr4YWjtiwss8vgjXgWt%6^o=U{-6@wMh+=ze#=TVo-fCehQcUr(? z6kigM0-l|Oiw_n$%q~mJw`JcCgDK(bY4|J^$!vk*i(foILI3~GJMW<1gaKI5=RWrx z5jg;E`_+H(3;Wyn*K7gmg5rCXBxVU*#LIwcM*g0v8_0l*@IblZKOzFyb5v<1?(blwpv0@yk{;azMe1=DWU8jTk4Gl zKyJ3%;H-8_LlVGAa+p>yPr5jITmtlK{k{ko)HZkGYJjm|CnEgD8!bSIdVN{&LX|?LUI|qK{)rvFjn`C} z_Lx^ln0q;SGdfpm-g9!6=;8}FE3PgZRgx@-%UNw#$cC>vCM-KjYBAw|sjYt()pnf)cpyti9KqRc z*9{zYv;5>%Vqtd?h4qczxk-mBB;`s9k;}3J;@%(QJV#!QyX2Wfk_GG9*?p|b2|1oL zYM7+CAZ2)CH6x8w)W6*y9pe-1a?T562trYg-~^`GJg^EC>~0@rPW z6%1QDQJTo5N&(H8;0Vmd3%1Evluc@r#M4WK=PFJ}Put{KXl>CuUoqZsK81)K8Uf?F zE*uHus6t1zRPmH9%tm*Ax)aW4qWZMEX2&JL`z_)&&V3tw_A$| zB_pH6WW-USwFB!Gsryp1;8t0->&dm}PGA5P>iskb{nzdK?(9U~D(_h^kS@VEb@^Pk zN(0NFyJ`DakXyw^G|)F3j%!f;G(f`1l49)LOLT9=dk-e1@R$Cli+&Oj(RY9KyCfnF zsJ#2`yYRPo`SPWJ%AT9Gmi?|oMD*gti>h1d0gwkmNY^Lp46<6h#{n-?kZ-ov&kfWA zUiPBkBP%Gk6G43Cx3V;_`@(^_A5C&?smLx-=m#?QG6!R!EtSO%2v|cdf5ygoYPShT z_r^}WDc#S0Pp;5Yn~9yp6p1t4g&B|pB3|ee0#;NXts(}U9M)}t6*s`dt~EqSDU)O1 z=tvv)!bl}Y=oQ|^g=<_TPQfFO(h0B*_4Nv!m}8zL0F(nr06@X0WOQ#m5MmBZj8HVt zTOq#6i~5BselHr>=NZD^qL<<2Ryotysy373x<0Ui{0}FtibJm3iP$N&+2d=dC!Zy- z*gDW*m0QP$a#cKFv0#F%AL9lVCc_z&tgFXi6;fewbYc-WThJ4N+9xXwK-CdOT=-6F z6>(UJ)-1BD&^YrVw^2IJY}e)n4p0qA1h8>&5WfXdNi0wjT!P%!MOo0}jIUY`zyQTY zXC-kukh@Rgo`t~z77vtU;J4v5XAtPEI!ngvBZ{kH@EyG8?OZvb&M1n^bXf|G7dV*h z2HM>=S=NgFTPlj9LYIngFC#x!h2UvROVMPxwP;vfQ)97M>qS6%j3&+zuXO5bHnFtp z29`vx(x%(&V3+Y8SqDfxGTpZvgM;Gu!=IPsk*qt zlWNSL?4{q|-^1-*B=3{Hz5-a)-rm9bT-^ZDz_aB9>V3t{o9hRyz+Ah2ux1lG`o8Cp zwrl0}!fM1m1^tW3sXT8x0Ly}LcKs*<`KA9oOEA>F{GDI<&Th$==-(DOY=GzG%a;T| zs^nT>t}HA<$Zizw95#<$d?=Fm_yzf#2|nAW;s(MmBG16FVXtp96;IB_wNd7yc@fod)k0L21EB!A$Z=$Ce~F9Ha0 z2A~vjS-?svz4h(&fm}w)t-O*80+r~wTi5RABs@#US&1V%*wzyiSb|7fcV4h#N*Hbt ztgL0lPP7la{h}3j17Pu%_Bt$sdQ{EwKzPz2Re38AZL2N>=M3`wLiaLy2Hka4fk-H> z7#gY81E6y6J4s}&EC3rVD^Ct^p>Z`=xVas$s)!N0fmeCEdHNx?(g5w^aj;&W?~ab&6Z zX<6MsyF;tkh|i_#oIM#EEMg)`-Fb!90(|J$4P>McZ9~$94d|qhGpNDTT6UTbTK$*R zGTS403@lagU0qkfE(A1Nk>Xv;F~s~%wxVYxnVFmjpjV|7r0-B5cWHSmfgG7vPW!cV z{f0{be!}^FqxpLy`;XrH{bgWfCn|B`c64v+|M<~Ah=>;KoRgnLl*mR%PUisBu2ers zgHpUEOv_1DvFZV5$F@~SwN(*aKQj@L>QA=vp>p&i+j+Kre&ZXz4&1Xvh)!z?Hxr5m zZUC}@!|9M=G`WTbXxO^76sO#{lkulN_-|^0c)Qrsy1c~n?s306mnROO3-PzV{l*SF z0E{}9&q=Z2#Iia-==YuzQMv#sJAco1Yi^(=r#H?@;?f+YC=652Nowq5J?)qceUhj?S?bQlN2X#t8=rrcm(kUC11z~x1n;_kqhcY1E+;`YnD~( z-Vj@z6~_~*b0KxgjAs=|P+>s~C$@&=BzSFy6Ifev+kRU6)kfV;Y!;Vrbx{Hg<11oSTq{BeSNx);^blyJ*(zwL09OC%f+Cym{D^4RrPU6KaU1h|M^cJ zoU4J#PKeV+esARTNmP~46-d_q8_pGb7H0s8cq9cxedMW75I(aQ1Xy@XB>(oqf8VQu zYToSBx{Dhzzo>nc1*Mj&QvVs!y9M84TeED~Noe7gFmK55rlyL}$dXs7JH1LMET-pi zR_MGbPos~M_PmNC%iiF8QWl$(>#4__nlvSaTh2@alL9KSZXIy3`}4@dtPAm;z4~W4 zuiQ;stxl$lO5g;f5U@%0_n7S}I4exJCay%dQmzID3EV>nWZZ*UK+ zY*zqQG7t`CqA1;l4L2l2zJ=CE5A@{EClXh!f@mU2u(;+XZ?JBXi74XhFC=TD>tK-R zdzKQkR+WuvB5NnE_ImUiJx9-Vmgd^r6>i{5$ULLU!V)q;X|~1KL?F?cs_B*!lr?^qA;tn~|n7ht7k zLTO8vxu{mMP+Vtnwrgy69U!dQg&^l9IoGI9myXXB@(Y-wW zDmV55-^a6n@4@L_VU+Ct5$bB)zrxyFAB>-q9|Bef`70#F$>-E}+B0RGT)$)DTVBX@ zU$~3H`CumL!mGR7Ve5ZQ=iy8F5JQf$>a%7-81SjMW#~DWFtWmRquJS#uv0W(aTwvics7#igHV>f(!D$V2BoO7tR#R==69 z-fSIM>9_pmzDZ(fAU>hrPkcb)f#g&#AF$(9e9nqBH>HX44Y(G}(Qrd_bLe(>_jtDG zxHS1vjtj{evS)|5sVb)jK`~gLu(z(#7ate-s*y!@XS*h_N{H&lI+3{4tkox#!{g2% z^g{dHK-X4GA_;J%7RchV<(MOlQ*^Ha%9_~gG}q6g7EN#s9jKjU2XRytozKc7Z0=y3 zOPDTnYPUy=tWIm|7QqT7xbC7*Y4t8VPz}_vbVerHT7RmW;E+$TZer#Jc9WTR^*SS- zNKbC9)zVxJQ(MuYS{kf0Srn&=xMBUFvF(b^gNb!1-Tl{vqI5XB4)NW z8t6@~ElOC8cyUvTigrc01)fvuh8_zGNMrhEiLkqC1_*8Ty`7!3U#v?QJOfiHv{j#b z$1n&qpvWGYuwB&8ME|VzDFR63GQw@P?{EF`VQC#v4q12fR)eP271aL^xo=)AEcE{; z*5s`|^2d*qOZREz-aVu}X4J0)R+_UqoeTN%njEJ?_g(wSkM?}GJ%R08?!DdcvvSY3`zQ$4)1U^2Jn+1F|1AQjo-tg!;jaVPLYCazTUQ2<-}(U8 zMSK3-sn7qKl!!r*#<^_Qt91hh_O0g0**wFZ@Rmm#WJm3GuJK9xe$w+?1PFGadKydO zPL()36dgsvOa;~lQ1{XU3sj9Yw_8wQeJfw8fU1PXb*(y!*uA-SxBvhLgGod|R4d?E zm5@xg@YcXeq%^Lj?-) zTJ0*v?k9NW&HWq8s-jWLe{dJ5*sTKVjg4SmqPcYZ?Sd7`Z3B{mO3k6j%F3!ZV1cP# z1e5FO7EY+Yu_C}{In{wOwDw$SMO`0txw&~*OVZ;>fB((>DC^AT5LT;(`Ys?xvI91bRqkUk(%AQeCY3(VDFxDwtSfcR{Cr=*7)!KM7}OUcOrBrC%O}&XL6!vBNq>S9qiln?*X|A zE^y-3`^T>BZ~o!9|`}c3Z{dTiolz#KkkN=V=S%|f;{Yh2`M@MlGT4lu+?Xt~ie(E8te7RXPiU?X|1zo;%e5$$+~!QizbN7F8Eq@Hwl8 za8PZ%{nd(!fXePO_}dBLw43Py-m)9mh3wf$d^H11;^pHBxo?*fF|F$mEZ=oh3YEC< z9O7(37YV`D7;p~N;tHOB^_pGF!!MP?DIaIGRoiEKY`e|1sxr&U7V4X|t!^2tSZixq z{=!a(<}Gc~QP`O*UVW*^>R{*pX%;8&xX`)o&`77 z9#KIZ?-bW7StLO{^<8QZEIAMRI`4C=cY6T`IzeeRSHM}36-MehP_J`z9Dq`IOmQU}mtgtnmd1i%{dox^3h z+-Dt3c8MjOaoj#Kx+_L}mpGQwp|g_UoEN>o)isGBr;kE>>_$d+i%#$& z8U1}wA2E&UpGTHivRV(cde7F_;X*k@^Q2-~fkh(NE+XM+u_CbB{#mUSl1R*Ui(r+6 z!>yaePCA4RzjH6oiavmx(+TUc5!!hL1{+^ldGx^0q6GcHL-I=l53 zP5y=>G8Pc5nI2g_m2*#UnympV8?6%Qc^6dfHnFUT+B!?pa4`gP1Ibze;5!Li9|loC z3qu)IEn+-{!I5)T$YdRej>u(|Ni$gx3k&4Rip%h)z_tU z06JRv)2X^yUZCWXb3O^nsw26jl%7!{v!6&~ZT)3rb}&MR7COCRmnHstNVPxK*8Z zFOH-*;v+l$uN0!D_Z^1}S7QX`!db6PyA07*naRCwC$T}!KN*;O86olPpD0YUr$_5((eh8+dtU$78CNJDdOZWSqlz1YxB zNK;6eGSn5tM?-@Cg$Qb^gfaoarVZPghA0xKTEoU(k1@ym#$)Ys&VB4XC)|7XUVE*% z)?RzfZ+_z&kI6LJXfLTv)AT73k%%xe%lev#$iBC)y?sVI+}_xGH;vzJw3jwY7O>Hv zqhDtr&Co#%;G@5uUko_QHfOd`|vdOdD6LG)+)w$(go z_tkyq{q)~<8xxW6kAM90Z{kCBcX#&*VojfX^e5JQV(2N$y*$PzppZyd>j549dhE3?w~!vmK6eo41KvjsEUSHIu2+-nLE0iu4E*9@rz9K;SZJJL*aeXl>S0{&`_UW-Q3c=n*lo0-Al zFk`+Z7CKttS%L!l`R}xBTLtzzBAT|>=YPC>J}vL3<=^_6w_{d8d*5eT0AW)7ocCYF z?Oo*Fk3ECyq}a^9eHF>^e%y%WI|G^;f&1JCnLa&1ed^d(B%-5Z>^_#!_ToKt;{AG^ zD?lPv?48p)N8y;ysPF=9`hD`z_vj2vD=@FGg#$opKl}Ke0GqOA^)Lm$_~LPZ01NN0 z)%~5|1-53O7$$*cG_2)VQ^`{L)_jsc{9wgidSF2Mkc6{1yTbM~wd~6>A;gl}eInD3 zT^$SoP|m>G`_nTyaY5$@+jGu~Vx;suxC52`>$0fG6dph|nxk1+Gf;yB1}QWEr7^p9 z^QIT2_x{-(AV;H?u{kBp_I_}4Bd~iKQ)Sl4zyl3(Z(GKKs`tkNoP8aEmOZZt+yr`) zVpJtCtU4J6P~9w8Ay1Tu7^bBG2R&pA24ekz(%@zv(sdw40}_eUUbq0--m^$*SQ}AQ4K&CLx5rsYNxO-FBy!oeF<3Fn=(VW$+%1!<2>L!VEL1{> z!7BtTCO}?A|oYgCM0akg+@4no`ybs+tgz%=Eh%$jNu{ z7>%Ti1eu5x-RQVikpgx}>3wXyoTY0#kYsFuiUCMjoobkXH{4DoZ737KG1#F8D;hW) z>J!l*KxX28&Fp^147fyA4;#Kdd(Qa&aj1c{EM^7dDZOs*{1#-rYs>U5FL>37BjZj2 zuwFp}R3G0*p(F^ro-Qc#1@Nrh-#@&MOZus{kDY!W$xHb9nSs40Ei$2Mz?EqfI7X@7 zV%=zGgBioga?`5XQU*%Mv5+&5-W+Q^qvQggcfTW+6lqrAcbw#0ZTI~@gmf#rX5PR87AS)X;%FMFI@$JJeia)0)keH;*<@wUb@R4 zRxiG5nj{phBSG3~UA?mfsnb>4L##?;?aN*R^~CJmsmK3JWdB>X-7_hNw8_Z*LQ z`Vl0}PfR-YH;#d~QN1)OuC&n`1!t96CIh)i48jV^%dyC1X(4Py=t@IxyfU@@SUEAY_9=ebDU9 zwIj!P=G`SGTjidj(2s-ZH3;L!~vAY#Tt4=9TwE_0}}6k`(UV`t^{4D}kXXNys_TL%An0^O&R?J0*C2$l0-A}##G?8 zM|p}Y&LH+#j=pcXm$L`XN-@DmfH!@33q6GFss|!ZD6fFmFbQu9tPWJE^ebOVabQbf zV6n*+w1cPuB*0ANIHX`>Q?m(ZjM#=4Gcde=CciS&a^i4_EY7N8n(IEI@C<7PDxl2c ztn__iPdMk&vl5H#1GH|2SyfvJ6r2a_h-b|UOF$Jov4#Vfm<3u5E{$d-Ex;X2gCXK= zaJD92!HhA3`e^6?{tW9}9(##c~jEMvmYOx6?w=J0YTZK-QF#-|fgZ z>uOi#kzys(3&~;%G(E580k2W>=9m>s*W*}-WWt@BFGfcOl?conG~~EsPKdW}IUYAp1S&;eG_sQ?H;(E`lSp3N%kqM3g(a^JQ z1FV2%!OXPd6+5D^O+=mWL$rcGW=3^`Jz;$t$O48yLXthaeBPs$CrAzOFp=x&)7OLm zX!Tt{U}*pW10Y%N+y!;5JT0j^-T~p%?DLLyL8u3t)~hB7K)p6V#m^2@M*8re<@y-8 zi;vTeT==8?Hj`^+_2xxX*?^0)9j7K1lhkgCb_Q^LrbYnLoNvm7bT^RGb5L-bRuTe2 z$+RMYzXJ1?%M*Y@I6$cFmAjE@74b7_ZU@~A-nVt{;TtT?r!Uwnr zVC!HE%!$4Q4hm1$^#-CTzDI`xC5rCC=R)ibW;b=s(OA)+^GRccR2|M0^PAKZs4yuW-gT^{-!pFMka z)bo4L46JqT386sLCiWkGNutfWfW)22cgSt9jab zkf~@wJ=>D}8r6Ms%M$zA7Fv zh#T_Cv0TWSpf@ng_cQm+r0=94k+QG)sy99Wnc7kZR?=wz3Ws3W==C^}nY6&3Ra}Vf z_e0kK812mkt0SdaIC{vk5+E5H354DZ=#cy00gOJsFi4D+e7X5(@LyJGw7nm->Ix?M zTpUpFma6wc8mtpT{T3#Pd97=OQ*OG@g=oD%FyX;%gGt?3JJGLp4;Im$Ytx!sKX5_K zq}xa#(s(sfGCeBtxPbwIK7V`LXUc(d5~5Ehz_N&Fo&KM)`_r+g}oy{6Z!o z`q^)+xVJN!d7h`e5FW1Lx$YO4ZU6Vj_MWKx&7@2*_5?Ns2ED?7;%HOFVBmx8WiOZI zG|#Jc*h~15ukUrxtTgp^(jBByte;^Zr3(-OR^HVnOc$b1imrBm3z? z*rdw@e+H$0xi_^FCZ;QOf}~=$`&m=1Gu_+>cEj30h0udbab+@s7XmRD)$N*rP!p)= z2bnoosM{2pc)e?$x-^(zP{Sx~hG7vcK%&2Lua7~ynK9VLdtSZ2Qb}uI~7^Zx&6A!R;GS7l>@OboJE`$fD5u5Pt-Ob z9YvR;l$Fg9F-3q9$2D0q5acj^g>cBjH(HRfjLNJy6Y5IZi^t4DzjNTWKX)}VahPOv zsV(wl1>*R(8|})$s;L%g&A=*6pK7L4<>3m!tI~%yUCB?ZUKt?EF@UsvLpVT!0Am&Qor#4;fU!unn z+h3REvYd9*OZb%Me2q1$-gIzGFM0Sw(|P%VnngC|hcWcoM;LPa$k@I|cz%*FZ?Sj=dV6qY?2i(qE zI7DTYUJWS5G_odA7=Rcsz|72=3yTm~@TpcUK>AdafbH$?Gpq!#*_whLE7C!vc+$Y} zUECFFbYr!$bel?DtdS#lL+u1~q{R%Bik21Cm^$zfS??iAjX6}jZaqHm^sy}IGX@N{ zbep#L9@MC+!g!P#q)otiih&KYn)UU2@4eTE=tRWtzyCgDRBHS7-4@|pkXP}ow~*J* z_ed6hr)t}ur57*oBB!spX#N=OO%TDKm{|!Bp+znzXX^l#7Xj{?J{N{DK#huX&B(0} zuM>BZ&yQ4;$n-W;y`g86R$zC8@`HJNEf9L*yQgdUV!c~@FEUfDx3IEk$!OONRt&T# zFDO)^{4MsG1TrPPG#cVuJF~B)z-CJ3YH}X*IWluxHX%JgT?)pB&A@Gd8*Ql*-n|qa z6fN(4UeGQxSs{A{hOmCyn$^ZMBmtZxM~lVLjv`UHTBpcaWA4(rPj)cP3{zjiJ~;6{ zdiA-G$SzJs01gpAY{qQsUK>%JBX(u`)8?LKUzk}*Wimj|6r1N}FsT7nc)sqJ!%8EG zqglNoKwB+B3Jv3y;Dz#+V zxAlK*KkHxy`_bRy1vAJCBlz6sV2l)7cErr`{`>Dk^Uwo>ciwp?sq4)FEO4M}QB%XI zWg=8t8md?7QVA~-to74sgH03%r#qGID z1JbfHNtdFxHQW8~=fzOPrdr9I597M9Coo(+samRdgf5ImCtb^miDgzZy_o0Y_jh}a z6^CEL-NkZyY1o?O{bwN1PvPFzc|f9t`@DWlf1BAP3DBHPza5m6W~H^K=^*2>Vth9s zH5=m|w3vwK%gy&ztJX9iwO_l|qipd#y&afgo)V0wl7^ydX2Ji25Xs&6&gZGx56 zSf>v`|J_nKI%wRZY^6-4=kzSrszPIvE_@o@Xg_CUUF*Ed;@mu$-$AIf+0G#NO+#rNL94C)F9 zNW(PFF<%IW@j!vep)0mF#cVifj)q5my-@SQgnOBlm=z0eQEOP3{ zd?l;f`0EK~!Jva>-Iiv>(u%5b~LOdvZFI}hO zsOuG)nGdZ}t&i`-d&AUvuVnPydLYC(hvIlV34|YH#qx~#=;}zGH?Z9vhP)^Xz7zt( zbZk|dp>bUwSV6&<6H~SA z$(ni`Rv{Jk1ojA=Eiei0XFIRAqD?XSz1!x+S&5|J$^~YHo-@yL8%5@ic3og~L~G#0 z1K7;)NZ$gfBo-(MEPDKp=M+rnd$merCEpIbl^%`D{-18SNI#KsC5f<-M##OgBKtMYPuauE5PQ8fM3| z!m&#}Xdzt*c?P9hH!vO$4C}vFfo2D5bUl?I-6RBJyRV+tE+`3O7w~}2mAsCYk3!=Ob1mcGLJP#l0y22SK?JW#WfF4Ze#Azx(dH>aFMq_>{%qwF<*Z zp-f-BPaZqO$UBDiv^j%M)I6`+Q#LOr4|(!l#r37ksyBtWl4qx9+aP76G40YKc;ZxV zU~Gb#!7C;6k4%(#6qKp=7s4qj#WbZgOoAQ#4YCghNZs@y18Q*a3SkeRH3<+v}4w9p^%gi~VKj(Y|)Ow+c?bUFc8y?VnH4+U zJ}~<+9a#93@$yWz>H=vdf*4x_fS%ciqRQI<(YESBaL%CKRcKyD_n^D3DiBGSzSLeH z6Rra408a_zd^1og%fe@#=P2QM)MLLLu&M+jb`M@&7G}0B zqs4%!if`(=5$r-BW-E$#2W4qYU9kN-{nG!kAaoVbpOEkm-@-uWFf&{3hk|%3+5H0WN z7k>S>yxCfO8qj#loB^n{9s-HOJs7lo^s!nRu>S3D|8-50CXrppSFbfZ%dFmu0zcW| zRpflnn2BT-nrJ_#23*nS)9>t)x>^jz?gUQuwhPsSy3AyZv$Tm zfhT+HZ#64>vzQMtBLGI1coEB=7q!X?bD{*aM*+TD2P-T`*!tV3HabklD4BuIAXDa9 zzkq~SGm711)>~G^y_(;cdn-`;#35#D+{L8DW-0m%U#Fe`dUk}^4+fY#x<3n*$jTZk zk04m=gXN%%fc8huona2%NIM}=;yo9nY5)F%zhODM3a90-h!8D;w5Y^5y={`S`o*ho zy#>xJ=bP8RYn4rDMDJekUiv4n-S#bpS!rNsn9+HEndrPG^L8(GVSXxVEh{Z#bFPV+ z^q}+kx4(QA>RIjcqrdpCjiv2H5j%F*y3C{x07FQj9SX~Tq9!X9wZGiE58CI1nS|c? zOb1-y+JRpL-nozO34+$ylh>P%_xGrZDL&^Ddi|cV9Z89K-TQcS%}Pv_#znz(nFJWH z9+L=*>A}8)VEy;N6eVk>kzqQDv1BtiD}g;@gh@PA$Fx=;Zp=h&W-0&`YqE+0IrlvB zFbzk%d$0akSsc=sMq9tY#KgMip=$%r$H^@r9}jh{Ap=W~!*kM})Xm z%6P9c=1g*&Xra+>#Z_%?v?~BBIp7XvKiQNui&E^sWoSUyC&a9z7|HAnR&O9mu(+ny zuQZ!59z}fpg=B4X9j1>xoPk?bWxblvTNze+-TRI1V`e&^`*727vXa;pvD{0s8K88l zV8xfwXIO2)GgXQJvehQu%m^5b8*&^3!mLIT`S3&gnC$rJPjulHRAlr>=|_YlQ{2_4oDyWh&D4!Pb_@tq_#Ov08j zj+c*57CP;>M~kcuwsnhO#USx^3ksDs-h~fT19h0rk%6|AW;r+)=e?;WTB?JELDbbJFw>u2x2MF@|NOlp=35jj>ivE7 z1L{k!SBlEZY>t@zXur$pSN>^n-N`u#Z=ne+^ENO^=JN@E@a6JyTw1UYK*wZWQ+@0* zO1npFa%OrljH^jwLG3sGPJx7|W9F?O-n1xmyxxn(%-p@CMEmEW^f(b^>eaDU06&z*;+j(eG(1To z@qGsZ;gAO4eQbcrW)0}@5!XZwLKRSz&}1PAYo2;QRSh8-X5p=YRTQJt=oH76>_+0e zlxFN=ToV-|=C#hWeb=2qoB>H-GHvd?1{b)A;R?UFqc1drf%OnCRWLbqO4q;e=Q}#D3xQD<2RQ%N6 zTPlM!0kCdK^dR@K12E=?d%6@`>f@w1u2!nqnT?zeLKRW~JF_c}!VZ$9#D+I;fE8vT zLdR!VID2vdP*j=Vr~;?^I$&O4q7PX__a1@Q<_+8#Sz9SoY9`-7Q@aGpfVH|w(D1&R z(1pkhMDHVk9o*+^`7*B@%wSYE*!Zu%C2z~>37pT~K$+=|7SEu_`MoS2LJ_(nS-fzv zc>I>Xw0Z#N#S^!9`D8wO{kHu?dGdBsO!vvOdi_@Ko$OvkX^&x&&77S`8m}Lz{@C=V zV~+H7Gy$WH_izCxksg?o5Wbm#rZ2K4qTUYn?fSO^wL8Y^1H5+5M}PJ&pM~J`!3Q6> zUN^kBY2Uu~wXaox%-wD^GG}F-(Ow~*ymV$2nLP!4NSiWjO(OCWgE`fP_{ic4o>kIS zG+=w}YCGG-ArO!pFc*&$BIGIy>zoS=8Oh-X$(VhuSii8S2&lk5C7o;CZvS0sijHlus8)>2Y3`HHNwA%eM+O_9ihI&NCGg}LJgv2=22gk z9UWzL1C&N<%|Hf&udi!`gxRRTT^Ot>aWb%%yqYJnvg?s+LKgt&um$Gs`Yp?mJ+j?i zgA0%#H;)}q0{i;Rk9EmmKaNS~21Zp{0drE5#aS-`fYt$7WDX9qZnQF3HG_<|sB1|8 zMGCL|_v|kqngUQ9O3?zL1VC!Ng1vdzFu2Hzm=(xFfRdPdY1w3C!h-J*F1{KiG;1(X zAX6zLl&0TQKey)Q(5`N~otku*)kG0&T8J1^Y(LiX6tNMk^`P3kXO0Oc;FxVYU?B`O zC21MncCOv@)qS}u;4u51x(?Lq8XZi7sT@-ba|i|YPWNIAHpQs)?W5<OH1W z{qu;KC9Cy7)@$pn3-nMzFzNsVR8(LuaI;cQ#`X=w`BCb4fK{xupnBr$q(f+Nm-}GO zYUaE+*LHN3I6?=uNZ9|m4P33D$`jS*fd@q`9y)C4q2GA;CL{s+iQnRrx)LpZ;~we zf_t9dq;dn9(uBRIH%~hM&THL{==Vwk>$3~o@dtCh;_Y>=lOHMX-4OK%IEtP zG^>23SSRN;ofw#wL{|N@Qk=R%hOs73$+rDr~+% z?26oqr-cc_ntnK_6o(mD1{EPyA07*naRCwC$T}`Vj-Bn(z&M^jJBq06(=K+n$z=?v%U+_f)Arn298$u$^;y@>w zp^)&J_Hxj*tJYroSs&Hs-22|sy*J!@x~r?} zt7|{?tY>{O%`wMY7 z_IiK6kjOoM?|WZ=b`#^%pZ)=fFr9Ds{qO0tQ1gzo*QXP&vx!M$*!^6Ip_rm|eb%ofb>w#N0Yt zfRvce^M}bCS2^yzyR0*5yvh5VnN{?8V@|utxHB(8rz-^|f#(MYyfslgP? zfSKLjr#B6!;C>?m3+(5=%et%y>~}=8Y_HG%c>R1?-!JRG_L{fvG(me`XITMZQQJAM z-^A@*i2Zr{^!8Es&c{HYr-<+_rfW9U0LulW{<9AsC}ChzOeZ4x?5oFv02bZfIp(^+ z1MJN}F-!tI(Xf_dO(iRqY7mK@kd5Iq#$$m2=|d7e#n~0Mm!)T4mI)!2)UPAKglAU= zLjaUBFlN7$aTUlb#ypM$;GCz+>Df{8MLY7WO6Xw5(k5*Vb=1eDI~+Rd9$ zl-{?`?gTj+wT#Uv>6VX^n>&Hs)0iqxoeVtCB=?qOEU0>YEWp{<5op={n!ru0H#J68 z0>i44VFK07f)(;aiHKoZ8gS4}#$Y1WZzv6J_9kr;F`AH;DOl!}EgxAVb*v3DDsceK zH>pOZnX?+Z9y-q|prUWAEiG9pix{V+&LaK+5V=(*(TXabMDgG65We9lEiiiNm2j z5lsSQChAxz?;JDW5@{Ybe0+AF@%7_S1M68#1LP$=Zg2kai%h5*aAg_=j!~+Q zSU1|)V8(E=+_b8;lz|d*Eac2%G{<_+D7nDrUGIn`MVb}(zV!xFZ$Ahb~l2HOwfy$se1x`4c+UmdIsANDs@HAu_`p2IGRL zzzA_F02@vhO2FEdD((SGGb#w)M@&1EZZl27o71eu8(u*ANR~{>7Xd-9MRCf8dN1AO zH>(%lwJZ{f){!7>wXV@D7WW!to;vS15MvszDWwd{0+R;NSRbrDoh1A{{r5J_#`hf0 zaphozC&CetlnOUZCE$?>iRa@asW1gE(3BJK%a1uf4=G=VIP3s}C5U$lSRfw)TMbTn zTl%|d|ETP6?+w&?Rq~r-K=&LvJek!r19@XsHBBXBP}NWaZ{0dD;3)FwDUCtM28H^d zIht!nzT=s9mzZpoYl=cY4yM;2(6ilWqZv?-Z_@L3 zWL%+_aB*~uy2<8Eh?wyl6QF%FD~}QL!BZWB{_aV6JwyG-V>$71ahQg;ZmyAK?260R z=z>NJBE?Dy3~N|b%Hl|RkIivInpLHuWi%->5!ahIy?JB3kCjR5eGarVHzmewcacOh z^X63Gwnur2EdAevaavZDdpSqotP~TB1bDLzuh9c!SK>NoJfXY-UehGJEwDOJrP8l_ zDaDB`g^9%`SCHJIcmDo>naXiU!N#UeCZI858)D4B@cNnj%23OR!zHpftBPr^w-JSB zSTj%oWgcgxt`ob$IhXF0SZtr5bu-MWI!d76++asMYhGA_WIGG%}RQJ zJD3JT#G4naH~9)?jPafw4IRLrVV%okk5Q6y;!$Mxn!Bu64g${15xn7XzY3s(5YgQr zE#>5Q2J+3i+LgJbSPAt)vI?!;mYc}TEo$C;r-5nv9t)8ynA2&uy3s}U?=k?dGq{}3 zaZ$`la=izZ>fQInotVCa06l71LVwyo9wY;Y;Gb1HXvgK1ST^V3Y?Hs#i|Zq^(!f{p z=3Ux624sW=b+#| ztt145l4)na&YF2%^9id>N#^mSqJHU^fy#-%B#v%{UV9+K&w)wJ@lk44y_b+FE`k=( zeW^`S%`OH|lb9(CCIes zxH@Jw*gU`~qEE20+(u;3p<+gb${usimWn2Uknya^t|@ifWdMALv6xA{u}8f%xr*Kip{HdlBWl7g4O=WY&;}k5)Obw zppgL9U@CYXIWH>QP6{vF!kdVu_#Pb&lq^o5^tu#F$y95cBhkI`+dQ^cBox^*vE6GB zk=I9?<7&q}yisgDt0*eEyWyhZdr~a}Vz%K4?I`a|3_BadZ{_u~=`JYUX4|*mLU=)3 zQQ}D})F)R=@Dd?=+kT+$M8^>5PpfW+s-AHzuhT}Q3lUvKS8C+>`{08Q9=#2scgjl$ z59G*szIgHCs7Kf_18W=cgis)A6Z<#6B+=$Wz+#?$GMJqxSkh|}VVM;u;y0R-G_t|$ z`V|s2*+7>HI^iOeG~Gv#G}>Jw#}e>ZLhYWI3YO8})k zSjI{0-Ka(|#(EUcPLK&<%)mpM(V@a`)%nC1n2!MBHG_-dtgMG}V@w7(K#*xz#w84_ zwM+`W-;b{xsg8adlp}tQ1ECI>*UspwT+JBsqPbVb3hEC5p4Yf}AY7s^JOMNO*t4 zqWhzT^rr=@UmI>LqCMB9H@Uv=vK9kOQiwE$AOyfK^0>Jm+JFAuw$73R=ORR}7r?TJ z=(N-UJOuUtP}Q=(Br^Gh4nt!hIW7IV_8O`6%I2%yum0;{Hu3~^1qQvsfZ}LV#bDrr z<88Ogn&ZheD^2~KbO)&v>t`59=}ra#op-efGlVFVqN|+=iOf>z!Slpm9pns<*rdw@ ze+H$0c{H_CCgy2Q0(39bMaRTxxe@G!wE-q|uoYJ(BX}VYQ=6J#L=5>L9kLL2vLYm6z+@CZBp?Mm zI|&ybEVP?lmRN7gK0gemgpa4wvy>;Z2Z~R9Y6k`V_Z#2%2Kr4HfE9h>6JHTkEN}bO zfBa+n+xW+90m^U9)!LV(Vme|?5}1fnuevQWkbxHE1%*nKzr{Y2K&GUZMnjxyXZE!e z*i6Y>P4TP#Kf$NRhs{3v%EE96WHgTEZy2XC@~;p3oC1Vc0>|>WvP7+#I)| zS#3;162M7vv{)SNC=!*cb&8xGbC=eAvfy@NnEDcKqoV)l?I1817$0K*$-)KTHR@hB zF}%G_OS?GU%#oP|<&-(?JIUal;R71!95)D7t7c`}VWpA8(Nn!5KwD}r1;%3-PNbzp z!nWSWA~UEXt{9DWL<3} z|BdFjLa^FyRMZ(IqV4RPZ<2&02*)?`qr};QIZ9rgCb`h8B&TPg_{XDTp0a?`9%THY zcO_G{V_Ci#hr%Y#`^_0zs5@4hoK`BfPP6dJ$NiruXTy$3p?iCp7Dj^tX(73efBmk@(Xfz;Mz!MY+UON8N3z#xqREpR$ zDI`c;fFndgz6}A(zyWp_{8{p${UDy*Cm4hyqDxRSWbM&pa_$;Ke(pfcDs8*2W;}SJ zK8V%+CiF(Qo#ku;+DR=#f^ll{xn`9kK3CZp0FmCTTF)Vz0O}Y9Fp{AbmhZ7b z=MtS;@!W$+Dg2rL*-cr!t*`#3iQKp9nFKofa;_(yBz)4-6gBjQhz^%RUkq*k_X)$y<)Ua*~tXO(6*kePKlrkX(6HIsvj3kDYKWSw-1X4~|5D3JR!uQe*I*vMC zp%Zhgvjl)Li1&u6jb6#<+)z9gMWGa|eCwXuvMPzr%zI@Z-@ zYFyU`R!}hJ#8h#_^}$tdBeoe$)bZwG*htle0MH;X&l~`^W4Xb177>i{u0t&}z;T-8or?F-eOW!vzoe=wRZ2RB9Fu(jg`?AMV5#u{g zCT3Pc!&9SMdBLF!^dmvqmBWZY$7zQZjRLzTt{<3D^h|YOpMvd+$*DXq+X2gh zad!O31NoW%J%^sCb@?kl^OcRs81G;69CpC-{`>C}0I8B`g|)J<2qDw&J|wrD3rZ-Q zVT$h8Z3aS5RVB|(Kdpn5kzR-}dt{2tQ)J$AqD?V4wh2_%4OVahv;a>j znt>ONq0#^h*vtUM0!9@6z@yMF{bXMR2;wLuCe*S3ODa9}?eR&Pj&q^LaK?X@$5x>wEWKzP!jsPaBQ zw6D4l>@%o$6`GgPH5iVo3PeJ2#n32fJpd~Aypu%cN&{Faf=!n2JUiUn4p>!!5r-SE z@^tg!huDS&XcLcvetnYX-ci>0eMfZ~x>@snBIz_>?UZ2YPVtV{mNv71GVM`_rvoS6+OwY)PNDR|pZ z=t2X!M4K|Nd(+eEL2I7K%FH%T9s{N-zNza*unU2httjFhl%-+Igmm6tRcEuu>{TfR z={ppJyI9?do&6$@V9oS9SWxdxjl+9;%lUps^Y@OdfArj6L}2xw|M&sDmJJC=i1;Ks zy%8Z=-_tLA;kUe}wV&S6d&`^&sI?vfiNhlp^xGI?wKQP;```XsOOhs$UC39jH9X5n zy%z<3vcs#$`I<2k$w_FTeV-a|Mek3)*P7sZEEZ(>7r*#(1vJ4P#J2pG{%;H+5Od9R zvhpOa$43A4%`c3#NB6w+_m43u-&gjgEW?p}%`gwvacL6D~P+zC#Q zj#|5e@P~|9tsuvK7uOZ2SZ$OQQ0e}9+_oXmDR4eP3sj`8wRGOk^Ks$MvSUNkijXdS zI7rDHW7UizV_x;1fxhW_z`PSmOAgI(^DMJXwr*Ur_j472KDzcgT+cJr`f zPJmf;fHwxd5&}>5*k3a%N3)m@F(Uv*mv|8g=uj69sWK-@KzkP8yYX?4?@ybFPbf;8 z!P5^;pi@%3Zq-+$F+JH^zi-`byqZzG9iC0M0j$aamu3o!czqPN&!ILZVt{Qhd#U6M zz{jaY`u>5?;;^#l_6#&yst>E{=LL;MX5W~uqbhEonpN?=6NSPE-C(&GlooST9Dh^W zxMVwz0;@I|d7l~G_>b@ZO+%Gs{VO6ws~|0VMr^lik+b^6O}O3yXV(3l+TX2`WhZ)% zg7><80?X~T#V{)iH0Io8p>t2>?ON=@{8H3f_MTh)z831zgU6W9 z;I|h=9N1m&GLta?42ecsD_{RRv$8)sgR%xr!~&T~=u00P*q6)1e)$z%{^0{b?epx( z8_mau2b8CXw>=B$U7u!U7{ivC>oF8CVLc`h7Sn^<5`xSqFh$9lX(auAc{la4CpasC zJ*(c3#8cVm{|$&c_NC2C1)yS0R#715?nfTSF2uX`>YtSbax>A^kawkoCx?-Mxh%aW`mM@I)^l6|Sjho*F#E}- ztXY&|2QEVc!agBpCB;Z)Z?bw5QG({0&C$?-iV7`g0z5qaLb5hG4hD(7%x7@Ztjc;d zp|>)u_PTF3x{jIYeBOrJ;U+7IT@lN@6q^Z3w`>Mp@I6>>&xnN?=0AstAqs|w=9;N6*#96xBh?|Oh|*)ObV4>~myOk27*<%R=* zo2K6ljr#!*&Rm}>old=*Mr>@1_(JGl!Z_=Cp193C0p7X*NW3St)|Iy4Q8A+U03c)7 z!R5M<_EI(gk`XN0`D%e)N7ZL6M1v+5fYD{BxU+K>!H@3)H1tOxQz7qH_**$shrrGCt z8sFf=zj-t80HsE{i~zchfW{T@r4|@SB8NPSo%!a0T8l(405f8366s9>QfspFGpw}J zmaJLUod1&#r_@V=PHAqSHAc(r(OjB=;0j%^>UgrizOati&<9gx) z5+6uTb)v$@Fack)Vy#VSp}Yatf;AfMgl-Pa4(}Y#jE+l_FV(nESVMO0kTzA-^dKk( z{Ru~Ql|J~ms8=0nvOC8$fmI?@ckD#sQnNNbsq7wiZbHwsKiue=#UvpCZm0!fT>B*vUOa@nCW+UJd?MHg(ALo{H}zv0)N6cQDQ+Od6ez%cCZ%lWpB1STRVv z-GV};k9Xk%)j%Dlb7Z2e^{0jj4)qjkCT3>fFqzk5Jek1FAU9B~mc!Inbf^SrTEQM2 zH%jG+%(Vg-lz`BSvC_^An|?FuSlSfisyELDip~--a}YoLgS>Ylx<3isi_pCg-JOK) zX#Fch_d>L6uZ5O1-R4e+?nG!g?e7;MTF5S2#p`w1vWo7!?uS<)dRe2#+j27NF6*7Y zG_RN1cB{kH)?w*ivzX-yC>A23(|(K^tQPB?Q{aMujP~O(pt5MNi@;~lzk;au0aSqY z6@erAeg{SoL;ljo25>^6yNK}XfBrTdG~c3NQSa}&Imtfv(d5#-3*!>6pEvG*^`BPP zot%^KR+_+a+9oE+>Ad0Zf4SJn!JyG~Ar99{5D29w*Yn9JgQwmQ6D$=OY?^F#rGuK1oDDRLPk- z<)h#&Pj{0InpLJJZR;slz51>dzz?OdxaO1q4NuZYeBXgUIHUo1A3LD3aauZj#5GZa zSSwT|G-)JZ%~KDksv#uPEW94{y8YocPryw;hvbKM!l8IS}f z)8^hg9?sEA$QA&a{WX$$Y!|4@g+Q~5zVE7+DrSYu$cxM!2dKbu378Xs*QEsdIc@-~ zx(Ugur8jtz7X(tsvI~C0b4}k-y_^Hpk5(S^7+lU3RAop9McS3^_AmKSorkh0-&fe!BGXyQu;?Su>@88 z4A=}b12=Er&dB;op;9yX4w~8}PzJ2kO@fBk)r2lcSlx6K*FAyVxz1VpGOrxWWK=ge z_^({(@vU?S!{|=LE=Ilb!dHqOjkInXU%#l8hE?~6t9TXksF#Cvhwa;mI(*0526*l4uVa4gvp@frpN8FTzV)qdSuk=z}~f+?U)8MY=70kZ-L&`=xVBh3{&t7NEX!1mbHa<E!(H<`yCfrd#zAoAE&q;s|9_FuIA95-SH4iyd9NqjYvPU80Q04_L5igL{@e^a$V>G03Ei#j5HnV-GhOf3Sb7{0J(YWfD%~OXMU_p z4*PLTIyW$?(rV2>3qXJw_2DU|WqqL|&Kz_2VAV}B-lDE00Td~`_TRJLKr{uQIFzCX zLJ5G>GKkSU>=<0+MQmXeOg>|(m|2QhrDcq)hF&m0p@z<0LgfQ2yBU!-Sv+rDIP7+YjiLTrt+O)m_sPA54zXb+iwNXQdBzp-8_$7GbvA})16}mo-{LK zX8F!{zGHvy(0SnGrM*ig<#1h}s)rx>B;!&0e9BzEiP7gB5Z z0I20N*_fPkLDi2ruE-4Rdh)5V#?ezaxltr!I~o`~Hso#JPhpWL{luGqVq&WT5P{L~ z=3?|_;HX(KjUGyIwoRJ-Ws&XTYfYtU1ne>@zt~<9;{?BV#B_6jF{`0J$2Ef$Fq;^K zE<|O02X^C_ePrUU81;t}hdJ$WRub&Or!ee5i?7= z^+48Z>#d99p{y_~&?JIAGq6%l#%>#k^Rv|P1gltULG{GhNr%wlE|0;S)y#Quj_qid zy7C(3)z&KINfGQt69I((p~y>#%-|j z2I@2$lD*>$tF)l5>VjV19LM?d)Bc%x-xt|C^#%7V+f34J+|(S$oF!*{LgrJLBWbpQ z(rqefGP>fz>({UEpWuFVLn$7qdA>{IseqZ^@;=}Abv?9$S6`E_IbhXt1KBJ?xq%vZ z`t@X6W^)5I04*RlP=gwasE`by<&VC{zw#WPB)|9T@?RuFa|?msro4Hoh~5(Y))C<8 z_g-!wGV2igA|mpAt7+)BnC~OgJ<~95AaTKLnC9TrtS&`Si96zQGSTEfKRrnjnK{w9o+~uDCfy*g z%h;{C`qV@b_HDoWey}GH1#Y7Cp5$`WgHz|2VATOn3P$-H0p385b?xR}9`*i&?c6_F zMe%&rh~*$QbcCL3u25Kh)L!RiRJ63z>vu}Ni#5}BEz?#w&0 zLfd$f3Y*V}U6EVywD7>Nre7tf)MHQ)v(leGC9^vE*&K7sF~=Np%rVCtbIdWv9COSu y#~gFaF~=Np%rVCtbIdWv9COSu#~gD!a{NEC)wDEP)PyA07*naRCwC$T|KX5%TcY`bDl{+w)ho@1c_%6A|l5YvKbE)2#tM;;Ovj;>Qx_o?!7Z}@9vgHbM8KS_x?D$ zS68iCRZTS8Y_rWa+ibJVHrs5o%{JR?v&}Z!Y_rWa+ibJVHrs5oz0Ags(TRNZtA9Zv zi~9G9M3_Wg5fRh%di;Oee%nuPyM4ZGYx}a_-M+Vf-~Q)j+wqyZ?}?ay@{?bGjz5}w z@r(bx-UIFb>(6?d{++XZMVOc+=%+o7S@zG{c6ScAy+c>^jj-&>GE-!ZtZ2~;n;EsqFP9BdN^XnJPG0L9?tXLqpG0rlm))Oyh3 z=h;4QWL|4-S)i(xH){!)hY>D}0D1v=y$n%3t-}<@j-;(A_bL{PH zT@-14Y}W*Rzn>=F4?t_l`K=E!eUj=^5A>xOpc{eTZzJ~@yU(#5ACKI#?K(G0#`Y1p zXx=$0#~`cOA>c2-g3^GKk?VG!Nv1!67xWC>Kqe9W5{j`(7`SK*T!D7`acn>64r|Bf zqi!$0n8ALy8ylz`*Sdt(oA;tGi_p)1zCd@=b935#BmfC^c_RcsBQ69mp04+v|$B zpfP|z`=R@+0%{h`8wD`u`>K0a)9iuv^VxumV3DNe8nBM$tJV%M-{F0>HAa z9ywNfBsrN@)@i`162jgrrFO>dUBh+&aySe61DU~$+PhM*M#y&|vYGyH139@D&!Umk zB0(-<#Z`*H+TXWMnrA}K$~BJ3NF?At5l=N;z!SGii5seh`+IRGr?X(p0SQ$U*vL)v zNc*}z>qgR}V1f6%;^)U92i96K8z3*~b$jQxAnRRQ#&>xnya<1RSp@X=vwzlPx-iiO za@}M{9fh!c{`@sL;Pvu^y$@+0em1nb{L82PD}YJ&_wE@l5M)Fm7wRE8C4qzB9<5Bw z8y(hQo|YmdFs)k^9uUf)CB@Jk!zoHV@OjTWvXUas3LKy3_PHP!2UPm^MS#UEH2JEN zxqI}co2bTPxi;p z#d8BKNIK7V11PLU*A^87?-AEd09`PxtJ85-{R=ORdsg9~BDHx01T7cEsWsF_>F$47 zTYZ;$B8!Bibwo&8uB&&8#eD{qygPIqj$+)MSUd|0RZc+igu4~vTy-@#;4*DsXIfUL z0xLWaMsw|QmnOHCm=Jm150Z+dzz)yG3HasLoZp9(pF=D=h?A5Nxb*!iq-SjPVhfB0>OMe!>j079)!zR8lWyP&Eekd2Ht{p?(@wnTT}9;T zf#C)ef92_)V4vVVw*3%T>OM5s=+A4%ANf@iTKCV@k_mnOngcG>-b0m`A8(&IQMK2v zAKuSsA0zE^r|-ci;q!3=dmf|ivZXH?JFqc8K>Kdic$pKVh0@1fuM8uJUiHo1%89po zvI%eBoFlV07;r#?0?*Rpl%h}*YT>x>`%3}LW;+dMm5Vv!LD?M>Dwfqg(wBQ-67^yq zE<{*X#(Xb`OLJ3VdV;-P*2W*`y~`#JKR6~H#Sv5w6ij5!o=Z4)XLUrc?W0meFR`v7 zqPzlL(?d1W(*9^gAp>(i-Dh!7l5--ii0-wP8T30~d{i1i1q1w%dS|=9pW53z*%P z)MbLah&{hB{pog{>p&D)h_2f`wcyf%VecXda(gt9ElX%ENf$L!`Iz9@g#i%P?J~~_ z^w|JTOt4#WU0fFuO%@qVFa$)C&pHKIp_iDM>A))n1If;e;#g^NfPm*7pn(^FQo9d+ zk$I0k#>aE&j)4Jgjw7qs7R!mX0JOy}@`xJ-cCxv8cht4=xTNlQXL3p1K5#saTKSQ{ zHmY`j+Ywpwi$C7e9xGz^l##!Y_5!1X3z(U`qHs}V11`>X3E@kwxWO3+oN#1Zv|!Zv z7D)%7OQw4P3U1R%LO>|Fb_VP$zb5QIb9=paEF9tN+q;2^6Jrwd+j8*P1EGq{VYX9q zR&A8f%QwRdMz{bM4Ge8vbf6}&r9c!|RotZMcyfd$mB)EEfBxzNXK4+1ORIV(vkGoqQU2Q4NkD3}!)uOn;gAnjD` zhz~&)iy73r^{D%U16>bT4#0aXUk+6!C?8+7g1r6^LGC3lTTZJ`wZU~WH$W|E^D2?# z83CMNbxfI?9gq zKUMy19=g;O)W2n9ySG3@ULS3?7uzoIMX~j)BK3Cj!bQdR?po9|AlgyhnHcM=Bfq!E z|m$q)}%G;r;XI#tcw5oI= z8g>z%P2)FXm@1z>+gl&GaDEK1s)mm}A{3C?0eBEv!V2scEp^oZ$ZA8xyoat9#eI-%vWqUV;R=MYZ0fzLzAN_F(xplG2y>^GY2IfIqtMekT*z5xNj zP>B#RYIhWs0^qih)Lyy?<7L9?#5mUgssMPkNLvpw6;6n49$)(Vw636Ame}XEyj7Or zIoVwlBwE?Vk(f;W>V#mGq+qnJlNUbr$j?6iES$N!?SXCx5$t#Q#U7E}rsPC@w^p50 zERurtRbTbS2Ov{hYG5Uu2B5G6!@7WRA~V?p^N2c#p7%r70hsOig4IZ=7LH!BtOQ7A zjRZt*26QO=A8v%b|?wJ%;)te^d=385<_ z2B4H1DK^2G#`Hh>9GzRLtqLK!GT@aM5co!*IV$!<3U=;Y?bH(UN(T$zy#(miqQ4{I zZC@dDa4D{gMv!!pob7CGAmjup{6Xdp3VzAUE}kWejT>tDvnb==Mi+rA)vx*2o+nyb zi=F#u^YHl&44HhE4U~kIg!ZTl7fH7d}X;jF!0(4ksyp_ z$r_hQ=mLBKvkX+erj(c3BA-^EAf@YNG>@o8#QPJI?hhu?9~Z2e!MD3eqhd*~_#Vai zf*JVS-G_Ev$xp1_EI^hqfV6!?3EU(7+2~<4_b_#TDb7>$+-NOdkn}kz;6gxL5q@gd z)&5WPSY-R#UM_34C*Z6CG&Qb=Jp85UqF6!ABCGkK41iRhkcgI^d)gm~BziLHzaLq^ z(-Pv=b>-mxy=NyywL5yAnRLMe=7yu{K6m#hO+}3efMmdWnoG!^9IS|lGi_5fLq6eQ zSn?N-B?knQX2OLPce-k$#Z`HP>-%OdTPa79d}7_>u-I577Vwaa!A4$lf&~Ky z6R=LwE`Uc`-9V{uSy6e}ftSce57Fv2Lm~F<_#o1^r=A!vScC`^--8@gl^BmwgESy` zsW3^kgpPk|5}7G?OTEaX_qmJy?VuIr2HxM0MgMp!+dPwoqHv>y{T_P0cMMiYb0cCR zgrhGM01Z@p@4A4&D83{h1w1}M%hGbML5 zIS=|CrKGq(Wn8wAB7HoVA%L#alqQDmptaBxm#J?V`dCCN*NK{%W#Zu9`jnrbl z$rLni<#SeYPyKZSL{X4ux`i*iUBFA_6_Qi`w=c#Y?pg<7wQ59zXkxxwX^dN`zjZKg zYqv}5kMi1YhmyxR)&WDps;~WjS-;x=RY*ukmcLI)_;5Kb#==gp%vY0g!W45{0`zO` zzQ1+cry0pB(H#K1kT8>8MT-R=w>?uIytJ;$uM}DWqG*};*6O~c%CyIvm@t3eB6jb9 zv*PNqQ6I{E}l;`gPFJ z^I&3Om>PB4z5!N$(qo$hrD(QE!2(lQgI(OE+`I)LtQB7rAU&l~A}+;BZ&ucq8JNaBTnd~^Bw0Z2RkZXKWTVA6s?+lK|W2)OJ$ z7%)8ckYHhqn=BN8P?RG$foV1mtU?95eUUN(nsW|`i{a|Nd`dJ}Bd}>fi!1k$xiN&( zYH|R@98?V$BUg_DfVIboW0m&X+uuv-MF)4EKUg~uOd9ZAo4|E$u!3Q0CrT5!R4Jf2 z0~~?bc)>Oqi?T^=ka*;Ec&_4r^t4T$g{F$$DL2jo8bI-dR#6S`6kk=+S-}a(k)EV0 zCCzBx$=l`6cf$EbR9|=3?AU&7-xy1xhx(|POA<%XoTZEO{c=MT`%y%F+}HMf^?hHt z9W5-flJH)60E@yaNyC7+X6dfOb>B??t^26mS^HUUBT!q)x`6sRx4%I@geoqewFB!G zsXM7zaI^KTW;-KT*@3)O-s{~3n_!%}e6Cy74}!A0Y5Q1^Tg68-&>aBk8dN_G5OA`j z7<>1UxoA>bz1g+2xQ~7oCWzi0Mj+?)^KZY$}YsmLx-=wD3)LXK?ii!V)6jbx{GMpExX7mE)nBCN2ahkMoA1h zt*mo#R_#m4t~EqSDHB4`CE;EespJT~!rQoTobe?7pa|VS4@^Ypio*I_<980w000G} zlF_|klH0eW0FTviYgu5z1F^iw9&!Ui$%{}d_ViX_F8wBx<9d-`1^FLNTov&KgFjf1 z9Kl&MwAGbD%gTZdtK2$1l&fw?-hv6%7|CD>oEs=vSC7Lgq{5MPlL4d!7wIFXo%}%x zQN@fvM*`5^vI@0kk!6M6GcR&Gyt40X&lapkxP~m}teN2vzXeiBEKm|$g51|dSB+(3f|N;2@U6IE{t!RwZmqRDb=(XhHEMx<~%u-o()O`IcM z>Dt$9Vrkb6EQwyFO}E*>Fn|25^<}T8LdGZjlUc#K1tkHILF8I)YIVd(Im9|VZ(tQ= zR#SCxi5Jmcd!#;46uk>V|6N_*rD|CP>vMH4kOrPDCs6MzZr)t~(hAJA>tEJvU`O9O znkBvgd7ap&pnowrl}CPFFB_;_KZ-yC=>q@w7Y{jzw9DC(Nc*E&7w-0VJ>sXnuhjOs z?H5PkqKOYh5@$iam+c0^*|d^pr?~_~+9J|EErKUb^#;Z+s2RLca{tJv;3dc{)cXrw zh?KaNrnJc=^WDItmK9!Bo*dvp z@6}x4<~(3k4_ybLd^ZmeX_l-sK)ZMxtk)-b?j2=?3~Dg-^5|%fYHoz~9?4^1sfzFFx(aq7pxGi4{_&Tz8)hw= zhI8WYe)qdwL`_BZfaxj7YJn5cx4->uaV#@i?k55t0oE0&$uG$@y_m-Qc5m&?n>TQ~ z7s-3u*QdbB4phpjO?I>OfBx_vL_~cdx8!FLC9)Bc>uoITO7*KWD8*~Sv|MEss~&K6 zY+Hp?TNTmuGZPW1{$wj3Dn~!EooDOkSHJNqz&%@p=(?tGGofgpP4>MWGK?nI5F`|f z1WU|AQj(I(lUU~G<5f8_E&L5oK+CL^P~oBT{3M|^*omA3If+tj07RD zV?|J;mNVc}uAF51YJiKcsj?JW_?=K%a%i>_fE64dn2>0NE!qR)aVEAIn z4kVm{V2d)Wz7%hNZCT-d7eSmGPzN;mNYd1VojR!(a$VVA#$*X=q74X6q z)m>3!ZP|Izz-eKf&9Z9U8)B=o;&?!HE~HMG@vI^VDlCW@Bx_hsf@zzB?;A^Q+fQr1 z+Nj%=&EgWSF3PF()P09EVugyGK(ZiQ0Sp5iTmXfKd|%-zE0z-_pgjxlO|a@M5KFL| z#ABO?8oGkW4eSS*GV^)2x>&n`0$fQo8r;NX&yv%sdOsT2x^{iPU5R8Dh$@2_xq_|E zs*lzoF{Wc#acqor{e;$8A}Uo@Ba370X73K#pUKZTo$ZCU%YXgTXSZsgvJ>L8k>49R zeHB$DRMsW4WX;x)@P)ZW_Z%(FPUefBF2RL@@PTy(IkK(afB(UM>{UTEZ+30n#f_L> z)V|7sIxbNEr|#`|4qFw`V_UOq*i~rJg#)$AdK5(@BKi^pi;qA4m;|PE=B1W5p!&{t zz9Wk7f@=2-*tV!psR&=K{(2@?5Cd3o?&e@Yy{Br!XM4-}exvz&Bm0lu`Vi{F(;MPS7T{QNIThA)e00pj9MlCDXC3K_{+M3hPRub^m z;F3rh(q-CFP4&#>bE=2-X-h))rrdA$%xjFRI|)yF;kJOr!`@>fWTgU_k&v}ejVxqipMx4e++ zesULu^TABgg;%$5*A7B!IuGB=hZu64Ri8BzVg+04B5O-*-~QMCv)_&0_YZ#mmsb1` zIM8JeLms(-8^GxZAGDx8`Dtg-%10m6$aP|&55I>&>+{zFCzB(R*B&zx$(sfBUX~j; zU{XhGd%9r5y1*K+AfzS?+@ocK7K%jN)~4?&05h`MB;uR2P_+X5#yxB}E6rCia1T+0 z(6@518;8%dCS@|*i6iKT(~gnmEq0f`5aQ@wn^ zPA1@UR;;-xO_XoIwe*sM{WzOnSaFHf_1!EwE)Bkv<3h5A3`C+@REUF$xVL0q?yakI z;^QJ;HL}R=Y%d9{5~8}z)Q?NeT76O$)yoFC7uxS$bZx~Xk^om~fh;atj+wDUBLr1r z<#k}oKvRXD-Dn`hx`MXgUdBPe;(D7;x6=i!^%ax+=|ZP=dz6Gdt*tYHRb!#>?qbNA zCe!F$c%T}nW9f{zaBKakZh*sRn{^X2H&D7r*sfk@#1m;S(^@Sp*I;TZIur>1F2I1U z+XfTteQ;bEBVFVnlQG!y=wODey3m85b_KZ_&9g$$St4e(HX7&+t}RMfjd*cWii&nc zxdonU>xLc+3rJ)7XNj=8YX%7IAlGjv?HB732G77$3T@Tr-Z2aU4OVA{I5ARDP8*Ow zguK6e`{B0b3zPPdM(hIKepPFU;q$xI7e<3P+Ui38zqKYGI)&*_r0fZ!WL{+MZTI1| z&&JQmC9u+*)%8}$pV#C#9lGz@SAMwXyX^^V>oQL_0{eP=cLbzpA-N4WwT(&kb*q+U zsi@;Rwqy3lC8@tjg&|2_(+Vnb03rY2YkO|qf&hbKP1hb#+>W);Kp}D$jPSUoPBjl? z5#RjV_P+LK_iO*Ftv`5Pz5gbSP|p}H-XKCu-|rv5_Y9!WY2QzJo{Ip%F1Ze<%3+l_JQN)T z?ky>>K7g7#_tOGZW6kZ>nd7E6eS>@UtTNxS>MUYU6IPXwOtDdhbTCFVS2&{=8s?a@&BUpi*-vva+%&4p?BS7krMqX8-^O)Ja4^RKetW zx`h+!Z>$LLS*~@U46Qv^S`q1^3gB2WHxFw`dOYdxzqub}ooSs{byA33K#pVwSq-ik z4V+*FUv{}8eFV;)Sp`oG6zIkEX8kPE=GIt``v_~rcUGDv*_&d1!?KN`{lK+!U@GEk z;ZVAeea6giUpF0R`#UDsyMD5I?-E$)vz@H*-~E|)+Q~>dG2vTjWZww!hcoc`e|#(B_J@ee&AZ)(7wBR4$ur z`yLU!g=BZ@mi2XC)c(3Z?GEYdXau98(r{D&fR!C$iSV75GktZOo!$=i?fUnCTm=_6 z0T}<-d_w4=Zr}gcFEpSPMIwLpqrV}dp$ev1=@|6)`#H$I{BCmT-iLNi)NjbLirk)p zn<8upb;p(PO0GD!mKAU-(kh*W!S>qKcF&z^fMmd394SP|Rg0<%F8G|)AP3d`ZVixm z3!Yj_E2(=G{iZ1GX1ai9b_2VRJ@;+`;w~g!J|522_Y*O#>kus8byNx!zp$Ri*@P|< zf~zs$9IC|?Jpbx7yOxLRo)`GIUCIJV%9xo!ZF8-v%(AkD`etpbGlLatZB5Hx*a6YZ z(k2~+ox$SOmx`|ARPW0cm=ULAE1SZ4RtjJ`;OO;Bjqb@>i80CDua~IwQP2(4`l+Z&s}l*_kFzeG zP2Fi#?Oo-CQP+63vx8ML$aq(SO9CiT`0W49IEl9eK;#g^2nZzrQfooW;O?bmlcDSYBx6Iaum`n_w<_t`kVv#pr+s8y!O2~nxLukQnj_r;zO*97 z6+4dg^0U|w)_PFw(KE+|6L8GF9atd@`4?#|y!~8<>#O^6SHM~GXJDkR1NAyb$KV;4 z2DiwtFgGmmEI8H1;|7B~QkG9X`NX8_2*3J`k2)7I&L`9^ugOzXxr;?Wd@tLZbEM`x z+HbQoS^vju?G2)e9;PAP#jj-rYpvgT^ATt;utdbEvE^DCFwq!mk)%>(f{h#6^|4)J z0$>gK9+2)7JnMmb4pVEqh~T|1rw2}t(f4f6&<$+X^7kBsh$(fV-WSWbt|N`iCVHG!*Z5<^ZO zh4|QwjP4el;6*a}`=CBz>L|uj%Pd)~2U@)vi1zyh5z2~Xg~}llSl9vqiw87%WgV;4 zik1R5CJfFj{0cH1PE zX55pG#K!95dU3=CP!WiXxM~&Pncy_r)-K(P%_MSN0Y>^k!EK2tPOKbJsVt(nm_;AI z4j!8u=zS-MTUz&9Kok&z!R$W4$ zZ~5pi`H!CCuldKnEkAB7DB1H7wac`aecaqY1;94opDw{efR1rIkU}nfEAls>1%oiCxgo?F!#Jr$|292 z6`8phQKLRB2dKn_dScucXy#QE-n|K6+%l_RcUElfKx@REo8Wd*uySVo%7UlQo-06Q zQiiN5fpyY%_YFk&5U+>M&B|%K+uC~@K&34!ugq}+4R^d=l+1yv-kYw!7O0AAIoB zNIPW}=m?wwB7I=e;p-zr1>g6vAn#zz%UeF*xEnazY$H~c_cyY%9$-0@uVc0s>;}#@ z+XJi`H?rq(P)|jWPvZS$x66D4vptqo1GG}^cWT?Tux6W<)ogFyvO?dZ<>=ql^~^Rc wtJ$Vy1%V@~B>EJb%7 literal 0 HcmV?d00001 diff --git a/data/themes/nyanology/images/cat10.png b/data/themes/nyanology/images/cat10.png new file mode 100644 index 0000000000000000000000000000000000000000..860f608edd03cd1573e695f119f39dea9387d64f GIT binary patch literal 10072 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 literal 0 HcmV?d00001 diff --git a/data/themes/nyanology/images/star_1.png b/data/themes/nyanology/images/star_1.png new file mode 100644 index 0000000000000000000000000000000000000000..94cd6ed393c3a853fadf647c4985db0c3cffd4ce GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j+1|*LJg}j}kp}h&DnI4tt0S-I;$S2j=|H_&t;ucLK6UIvKtrx literal 0 HcmV?d00001 diff --git a/data/themes/nyanology/images/star_2.png b/data/themes/nyanology/images/star_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d16688f0c503fd095117219993f1cd59b335807b GIT binary patch literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j+1|*LJgFVdQ&MBb@0KX6!P5=M^ literal 0 HcmV?d00001 diff --git a/data/themes/nyanology/images/star_3.png b/data/themes/nyanology/images/star_3.png new file mode 100644 index 0000000000000000000000000000000000000000..708403cc0ce72a1a23d2e0a33f47bbf4d254d365 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j+1|*LJg>$j+1|*LJg>$j+1|*LJg2?ZYALPgHoEI#$-}VZy!=BcC1wwxN(N6?KbLh*2~7a2S{x7n literal 0 HcmV?d00001 diff --git a/data/themes/nyanology/images/star_6.png b/data/themes/nyanology/images/star_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2331a0020a9eb5db78285f33693a3eac12b0e366 GIT binary patch literal 94 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j+1|*LJg;M1& literal 0 HcmV?d00001 diff --git a/data/themes/nyanology/nyancursor.edc b/data/themes/nyanology/nyancursor.edc new file mode 100644 index 00000000..72145b97 --- /dev/null +++ b/data/themes/nyanology/nyancursor.edc @@ -0,0 +1,195 @@ +#ifndef __NYANCAT_CURSOR +#define __NYANCAT_CURSOR +#define FRAME_DURATION 0.07 +collections { + group { name: "nyanology/catcursor"; + alias: "terminology/cursor"; + images { + image: "cat01.png" COMP; + image: "cat02.png" COMP; + image: "cat03.png" COMP; + image: "cat04.png" COMP; + image: "cat05.png" COMP; + image: "cat06.png" COMP; + image: "cat07.png" COMP; + image: "cat08.png" COMP; + image: "cat09.png" COMP; + image: "cat10.png" COMP; + image: "cat11.png" COMP; + image: "cat12.png" COMP; + image: "cr_key.png" COMP; + } + parts { + part { name: "cat"; + description { state: "default" 0.0; + min: 0 17; + max: SOURCE; + aspect: 2.4 2.6; // aspect from the source image + aspect_preference: VERTICAL; + rel1.relative: 4.5 0; + image.normal: "cat01.png"; + map.on: 1; + } + description { state: "greyed"; + inherit: "default"; + color: 120 120 120 255; + } + description { state: "anim1" 0.0; + inherit: "default"; + image { + tween: "cat01.png"; + tween: "cat02.png"; + tween: "cat03.png"; + tween: "cat04.png"; + tween: "cat05.png"; + normal: "cat06.png"; + } + } + description { state: "anim2" 0.0; + inherit: "default"; + image { + tween: "cat07.png"; + tween: "cat08.png"; + tween: "cat09.png"; + tween: "cat10.png"; + tween: "cat11.png"; + normal: "cat12.png"; + } + } + description { state: "rotation1" 0.0; + inherit: "default"; + image { + tween: "cat01.png"; + tween: "cat02.png"; + normal: "cat03.png"; + } + map.rotation.z: -35.0; + } + description { state: "rotation2" 0.0; + inherit: "default"; + image { + tween: "cat04.png"; + tween: "cat05.png"; + tween: "cat06.png"; + tween: "cat07.png"; + tween: "cat08.png"; + normal: "cat09.png"; + } + map.rotation.z: 35.0; + } + description { state: "rotation3" 0.0; + inherit: "default"; + image { + tween: "cat10.png"; + tween: "cat11.png"; + normal: "cat12.png"; + } + map.rotation.z: 0.0; + } + } + + part { name: "key"; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { + to: "cat"; + offset: -5 -5; + relative: 0.1 0.0; + } + rel2 { + to: "cat"; + offset: 4 4; + relative: 0.5 1.0; + } + image { + normal: "cr_key.png"; + border: 4 4 4 4; + } + color: 255 255 255 0; + } + description { state: "on" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + description { state: "out" 0.0; + inherit: "default" 0.0; + color: 160 100 255 0; + rel1.relative: -0.2 -0.18; + rel2.relative: 0.6 1.18; + } + } + + } + programs { + program { name: "anim"; + signal: "focus,in"; + source: "terminology"; + action: STATE_SET "anim1" 0.0; + transition: LINEAR FRAME_DURATION*6; + target: "cat"; + after: "loop"; + } + program { name: "loop"; + action: STATE_SET "anim2" 0.0; + transition: LINEAR FRAME_DURATION*6; + target: "cat"; + after: "anim"; + } + program { name: "stop_anim"; + signal: "focus,out"; + source: "terminology"; + action: ACTION_STOP; + target: "anim"; + target: "loop"; + target: "bellrotate1"; + target: "bellrotate2"; + target: "bellrotate3"; + after: "stop_anim2"; + } + // Is it that important to go back to default state ? + program { name: "stop_anim2"; + action: STATE_SET "greyed" 0.0; + transition: LINEAR FRAME_DURATION*6; + target: "cat"; + } + program { name: "key"; + signal: "key,down"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "key"; + after: "key2"; + } + program { name: "key2"; + action: STATE_SET "on" 0.0; + target: "key"; + after: "key3"; + } + program { name: "key3"; + action: STATE_SET "out" 0.0; + transition: DECELERATE 0.3; + target: "key"; + } + program { name: "bellrotate1"; + signal: "bell"; + source: "terminology"; + action: STATE_SET "rotation1" 0.0; + transition: LINEAR 0.12; + target: "cat"; + after: "bellrotate2"; + } + program { name: "bellrotate2"; + action: STATE_SET "rotation2" 0.0; + transition: LINEAR 0.24; + target: "cat"; + after: "bellrotate3"; + } + program { name: "bellrotate3"; + action: STATE_SET "rotation3" 0.0; + transition: LINEAR 0.12; + target: "cat"; + after: "anim"; + } + } + } +} +#endif /*__NYANCAT_CURSOR*/ diff --git a/data/themes/nyanology/nyanology.edc b/data/themes/nyanology/nyanology.edc new file mode 100644 index 00000000..5d56ee95 --- /dev/null +++ b/data/themes/nyanology/nyanology.edc @@ -0,0 +1,2450 @@ +collections { + +////////////////////////////////////////////////////////////////////////////// + //// the background and general container for the terminal + group { name: "terminology/background"; + images { + image: "bg_bevel.png" COMP; + image: "bg_shine.png" COMP; + image: "bg_glint.png" COMP; + image: "pm_shadow.png" COMP; + image: "pm_overlay.png" COMP; + image: "pm_fill.png" COMP; + } + parts { +// other signals sent not handled here +// program { name: "focus_in"; +// signal: "focus,in"; +// source: "terminology"; +// } +// program { name: "focus_out"; +// signal: "focus,out"; +// source: "terminology"; +// } + + //////////////////////////////////////////////////////////////////// + // background handling + part { name: "base"; type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + color: 0 0 0 255; + } + description { state: "translucent" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { state: "catblue" 0.0; + color: 0 51 102 255; + } + program { name: "belling"; + //signal: "bell"; + source: "terminology"; + action: STATE_SET "catblue" 0.0; + target: "base"; + transition: DECELERATE 0.15; + after: "belling2"; + } + program { name: "belling2"; + action: STATE_SET "default" 0.0; + target: "base"; + transition: ACCELERATE 0.15; + } + } + part { name: "terminology.background"; type: SWALLOW; + description { state: "default" 0.0; + } + description { state: "image" 0.0; + inherit: "default" 0.0; + } + description { state: "scale" 0.0; + inherit: "default" 0.0; + } + description { state: "edje" 0.0; + inherit: "default" 0.0; + } + description { state: "movie" 0.0; + inherit: "default" 0.0; + } + } + program { name: "trans_on"; + signal: "translucent,on"; + source: "terminology"; + action: STATE_SET "translucent" 0.0; + target: "base"; + } + program { name: "trans_off"; + signal: "translucent,off"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "base"; + } + program { name: "media_off"; + signal: "media,off"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "terminology.background"; + } + program { name: "media_img"; + signal: "media,image"; + source: "terminology"; + action: STATE_SET "image" 0.0; + target: "terminology.background"; + } + program { name: "media_scale"; + signal: "media,scale"; + source: "terminology"; + action: STATE_SET "scale" 0.0; + target: "terminology.background"; + } + program { name: "media_edje"; + signal: "media,edje"; + source: "terminology"; + action: STATE_SET "edje" 0.0; + target: "terminology.background"; + } + program { name: "media_mov"; + signal: "media,movie"; + source: "terminology"; + action: STATE_SET "movie" 0.0; + target: "terminology.background"; + } + + //////////////////////////////////////////////////////////////////// + // actual text grid for chars, cursors, selectiond etc. goes here + part { name: "terminology.content"; type: SWALLOW; + description { state: "default" 0.0; + rel1.offset: 1 2; + rel2.offset: -2 -2; + } + } + + //////////////////////////////////////////////////////////////////// + // overlayed prettiness + part { name: "bevel"; + mouse_events: 0; + description { state: "default" 0.0; + rel1.offset: 0 0; + rel2.offset: -1 -1; + image.normal: "bg_bevel.png"; + image.border: 3 3 5 3; + image.middle: 0; + fill.smooth: 0; + visible: 1; + } + } + part { name: "glintclip"; type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + } + } + part { name: "glint"; + mouse_events: 0; + clip_to: "glintclip"; + description { state: "default" 0.0; + fixed: 1 1; + min: 79 5; + max: 79 5; + rel1 { + relative: 0.0 0.0; + offset: 0 1; + } + rel2 { + relative: 1.0 0.0; + offset: -1 1; + } + image.normal: "bg_glint.png"; + } + } + + //////////////////////////////////////////////////////////////////// + // a place terminology will place an entry box for internal commands + part { name: "cmdclip"; type: RECT; + description { state: "default" 0.0; + rel1.to: "terminology.cmdbox"; + rel1.offset: -100 -100; + rel2.to: "terminology.cmdbox"; + rel2.offset: 99 99; + color: 255 255 255 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + visible: 1; + } + } + part { name: "cmdback"; type: RECT; + clip_to: "cmdclip"; + description { state: "default" 0.0; + color: 255 255 255 255; + rel1.to: "terminology.cmdbox"; + rel1.offset: -2 -2; + rel2.to: "terminology.cmdbox"; + rel2.offset: 1 1; + } + } + part { name: "terminology.cmdbox"; type: SWALLOW; + clip_to: "cmdclip"; + description { state: "default" 0.0; + fixed: 1 1; + min: 8 8; + rel1.relative: 0.0 1.0; + rel1.offset: 8 9; + rel2.offset: -9 9; + align: 0.5 0.0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + rel1.offset: 8 -9; + rel2.offset: -9 -9; + align: 0.5 1.0; + } + } + program { name: "cmdshow0"; + signal: "cmdbox,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.4; + target: "cmdclip"; + } + program { name: "cmdshow"; + signal: "cmdbox,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: SPRING 0.4 0.5 4; + target: "terminology.cmdbox"; + } + program { name: "cmdhide"; + signal: "cmdbox,hide"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: ACCELERATE 0.5; + target: "terminology.cmdbox"; + target: "cmdclip"; + } + + //////////////////////////////////////////////////////////////////// + // visual bell - spinning red siren light + /*part { name: "bell_glow"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + color: 255 255 255 0; + rel1.to: "bell_base"; + rel2.to: "bell_base"; + min: 1600 1600; + fill.smooth: 0; + image.normal: "bg_led_glow.png"; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { state: "done" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + min: 0 0; + } + } + part { name: "bell_base"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + color: 255 255 255 0; + min: 32 32; + max: 32 32; + rel2.offset: -1 -1; + align: 1.0 1.0; + image.normal: "bg_led_base.png"; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { name: "bell"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + color: 255 255 255 0; + rel1.to: "bell_base"; + rel2.to: "bell_base"; + image.normal: "bg_led.png"; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { name: "bell_strobe"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + color: 255 255 255 0; + rel1.to: "bell"; + rel2.to: "bell"; + image.normal: "bg_led_strobe.png"; + map { + on: 1; + smooth: 1; + rotation.center: "bell"; + } + } + description { state: "spin" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + map.rotation.z: 36.0; + } + description { state: "spin_done" 0.0; + inherit: "default" 0.0; + visible: 0; + color: 255 255 255 0; + map.rotation.z: 684.0; + } + } + program { name: "bell0"; + signal: "bell"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "bell_base"; + target: "bell"; + target: "bell_strobe"; + target: "bell_glow"; + after: "bell"; + } + program { name: "bell"; + action: STATE_SET "visible" 0.0; + target: "bell_base"; + target: "bell_glow"; + after: "bell2"; + } + program { name: "bell2"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.1; + target: "bell"; + target: "bell_glow"; + after: "bell3"; + after: "bell3.1"; + } + program { name: "bell3"; + action: STATE_SET "spin" 0.0; + transition: LINEAR 0.1; + target: "bell_strobe"; + after: "bell4.0"; + after: "bell4.1"; + after: "bell4.2"; + } + program { name: "bell3.1"; + action: STATE_SET "done" 0.0; + transition: DECELERATE 0.5; + target: "bell_glow"; + } + program { name: "bell4.0"; + action: STATE_SET "default" 0.0; + transition: ACCELERATE 1.2; + target: "bell"; + } + program { name: "bell4.1"; + action: STATE_SET "default" 0.0; + transition: ACCELERATE 1.6; + target: "bell_base"; + } + program { name: "bell4.2"; + action: STATE_SET "spin_done" 0.0; + transition: LINEAR 0.9; + target: "bell_strobe"; + } + */ + + //////////////////////////////////////////////////////////////////// + // popup media over the terminal (until dismissed) + part { name: "popmedia_clip"; type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + color: 255 255 255 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { name: "popmedia_shadow"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel1 { + to: "terminology.popmedia"; + } + rel2 { + to: "terminology.popmedia"; + } + image.normal: "pm_shadow.png"; + image.border: 64 64 64 64; + image.border_scale_by: 0.1; + fill.smooth: 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + rel1.offset: -32 -32; + rel2.offset: 31 31; + image.border_scale_by: 1.0; + visible: 1; + } + } + part { name: "popmedia_fill"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "terminology.popmedia"; + rel2.to: "terminology.popmedia"; + image.normal: "pm_fill.png"; + fill { + size.relative: 0.0 0.0; + size.offset: 64 64; + } + } + } + part { name: "terminology.popmedia"; type: SWALLOW; + clip_to: "popmedia_clip"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.relative: 0.5 0.5; + rel2.relative: 0.5 0.5; + visible: 0; + } + description { state: "image" 0.0; + inherit: "default" 0.0; + rel1.relative: 0.1 0.1; + rel2.relative: 0.9 0.9; + visible: 1; + } + description { state: "scale" 0.0; + inherit: "default" 0.0; + rel1.relative: 0.1 0.1; + rel2.relative: 0.9 0.9; + visible: 1; + } + description { state: "edje" 0.0; + inherit: "default" 0.0; + rel1.relative: 0.1 0.1; + rel2.relative: 0.9 0.9; + visible: 1; + } + description { state: "movie" 0.0; + inherit: "default" 0.0; + rel1.relative: 0.1 0.1; + rel2.relative: 0.9 0.9; + visible: 1; + } + } + part { name: "popmedia_overlay"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "terminology.popmedia"; + rel2.to: "terminology.popmedia"; + image.normal: "pm_overlay.png"; + fill.smooth: 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "popmedia_bevel"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "terminology.popmedia"; + rel2.to: "terminology.popmedia"; + image.normal: "bg_bevel.png"; + image.border: 3 3 5 3; + image.middle: 0; + fill.smooth: 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "popmedia_glintclip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "popmedia_glint"; + mouse_events: 0; + clip_to: "popmedia_glintclip"; + description { state: "default" 0.0; + fixed: 1 1; + min: 79 5; + max: 79 5; + rel1 { + to: "terminology.popmedia"; + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + to: "terminology.popmedia"; + relative: 1.0 0.0; + offset: -1 0; + } + image.normal: "bg_glint.png"; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "popmedia_shine"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "terminology.popmedia"; + rel2.to: "terminology.popmedia"; + image.normal: "bg_shine.png"; + fill.smooth: 0; + align: 0.5 0.0; + aspect: (255/120) (255/120); + aspect_preference: HORIZONTAL; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "popmedia_dismiss"; type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + fixed: 1 1; + color: 0 0 0 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + program { name: "popmedia_dismiss"; + signal: "mouse,clicked,*"; + source: "popmedia_dismiss"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.5; + target: "terminology.popmedia"; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + after: "popmedia_dismiss2"; + } + program { name: "popmedia_dismiss2"; + action: SIGNAL_EMIT "popmedia,done" "terminology"; + } + program { name: "popmedia_off"; + signal: "popmedia,off"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.2; + target: "terminology.popmedia"; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + after: "popmedia_dismiss2"; + } + program { name: "popmedia_img"; + signal: "popmedia,image"; + source: "terminology"; + action: STATE_SET "image" 0.0; + transition: DECELERATE 0.2; + target: "terminology.popmedia"; + } + program { name: "popmedia_scale"; + signal: "popmedia,scale"; + source: "terminology"; + action: STATE_SET "scale" 0.0; + transition: DECELERATE 0.2; + target: "terminology.popmedia"; + } + program { name: "popmedia_edje"; + signal: "popmedia,edje"; + source: "terminology"; + action: STATE_SET "edje" 0.0; + transition: DECELERATE 0.2; + target: "terminology.popmedia"; + } + program { name: "popmedia_mov"; + signal: "popmedia,movie"; + source: "terminology"; + action: STATE_SET "movie" 0.0; + transition: DECELERATE 0.2; + target: "terminology.popmedia"; + } + program { name: "popmedia_img2"; + signal: "popmedia,image"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.2; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + } + program { name: "popmedia_scale2"; + signal: "popmedia,scale"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.2; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + } + program { name: "popmedia_edje2"; + signal: "popmedia,edje"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.2; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + } + program { name: "popmedia_mov2"; + signal: "popmedia,movie"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.2; + target: "popmedia_clip"; + target: "popmedia_dismiss"; + target: "popmedia_shadow"; + target: "popmedia_fill"; + target: "popmedia_overlay"; + target: "popmedia_bevel"; + target: "popmedia_glint"; + target: "popmedia_glintclip"; + target: "popmedia_shine"; + } + + //////////////////////////////////////////////////////////////////// + // overlayed options and controls + part { name: "terminology.about"; type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + min: 198 198; + max: 198 198; + align: 0.5 0.0; + visible: 0; + rel1.relative: 0.0 1.0; + rel2.relative: 1.0 1.0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + align: 0.5 0.5; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 1.0; + } + } + program { name: "ab_show"; + signal: "about,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: SPRING 1.2 2.0 6; + target: "terminology.about"; + } + program { name: "ab_hide"; + signal: "about,hide"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.6; + target: "terminology.about"; + } + + //////////////////////////////////////////////////////////////////// + // swallow to hold invisile rect to click on to dismiss things + part { name: "terminology.dismiss"; type: SWALLOW; + description { state: "default" 0.0; + } + } + + //////////////////////////////////////////////////////////////////// + // overlayed options and controls + part { name: "terminology.optdetails"; type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + min: 40 40; + align: 0.0 0.5; + visible: 0; + rel1 { + relative: 1.0 0.02; + offset: 8 8; + } + rel2 { + relative: 1.0 0.98; + offset: 8 -9; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + align: 1.0 0.5; + rel1 { + relative: 0.1 0.02; + offset: 8 8; + } + rel2 { + to_x: "terminology.options"; + relative: 0.0 0.98; + offset: -9 -9; + } + } + } + program { name: "opdt_show"; + signal: "optdetails,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.4; + target: "terminology.optdetails"; + } + program { name: "opdt_hide"; + signal: "optdetails,hide"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.2; + target: "terminology.optdetails"; + after: "opdt_hide2"; + } + program { name: "opdt_hide2"; + action: SIGNAL_EMIT "optdetails,hide,done" "terminology"; + } + + part { name: "terminology.options"; type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + align: 0.0 0.5; + visible: 0; + rel1 { + relative: 1.0 0.02; + offset: 8 8; + } + rel2 { + relative: 1.0 0.98; + offset: 8 -9; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + align: 1.0 0.5; + rel1 { + offset: -9 8; + } + rel2 { + offset: -9 -9; + } + } + } + program { name: "op_show"; + signal: "options,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.4; + target: "terminology.options"; + } + program { name: "op_hide"; + signal: "options,hide"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.6; + target: "terminology.options"; + } + + part { name: "terminology.controls"; type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + min: 10 10; + align: 0.0 0.5; + visible: 0; + rel1 { + relative: 1.0 0.5; + offset: 8 8; + } + rel2 { + relative: 1.0 0.5; + offset: 8 -9; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + align: 1.0 0.5; + rel1 { + relative: 1.0 0.5; + offset: -9 8; + } + rel2 { + offset: -9 -9; + } + } + } + program { name: "ct_show"; + signal: "controls,show"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.3; + target: "terminology.controls"; + } + program { name: "ct_hide"; + signal: "controls,hide"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.5; + target: "terminology.controls"; + } + } + } + +////////////////////////////////////////////////////////////////////////////// + //// the selection + // selections come in 5 modes: + // + // oneline (also multiple lines but all fill the row): + // | ######### | + // + // disjoint: + // | #######| + // |## | + // + // default: + // | ###########| + // |######### | + // + // topfull: + // |##############| + // |###### | + // + // bottomfull: + // | ######| + // |##############| +#define PATCOL 255 255 255 140 +#define OUTCOL 120 220 255 128 +#define OUTCOL2 180 240 255 144 + + group { name: "terminology/selection"; + images { + image: "select.png" COMP; + } + parts { + // background pattern. duplicated because clips cut out regions of + // it to see and clips don't overlap + part { name: "background_top"; + mouse_events: 0; + clip_to: "top_clip"; + description { state: "default" 0.0; + color: PATCOL; + image.normal: "select.png"; + rel2.to_y: "top_clip"; + fill.smooth:0; + fill.size.relative: 0.0 1.0; + fill.size.offset: 8 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + fill.origin.offset: 16 0; + } + } + part { name: "background_middle"; + mouse_events: 0; + clip_to: "middle_clip"; + description { state: "default" 0.0; + color: PATCOL; + image.normal: "select.png"; + rel1.to_y: "middle_clip"; + rel2.to_y: "middle_clip"; + fill.smooth:0; + fill.size.relative: 0.0 0.0; + fill.size.offset: 8 15; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + fill.origin.offset: 16 0; + } + } + part { name: "background_bottom"; + mouse_events: 0; + clip_to: "bottom_clip"; + description { state: "default" 0.0; + color: PATCOL; + image.normal: "select.png"; + rel1.to_y: "bottom_clip"; + fill.size.relative: 0.0 1.0; + fill.size.offset: 8 0; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + fill.origin.offset: 16 0; + } + } + + // clips that clip the above pattern images to occupy specific + // regions of the object (or be invisible since clip is invisible) + part { name: "top_clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "terminology.top_left"; + rel1.relative: 1.0 0.0; + rel2.to_y: "terminology.top_left"; + rel2.relative: 1.0 1.0; + } + description { state: "oneline" 0.0; + visible: 0; + } + } + part { name: "middle_clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "terminology.top_left"; + rel1.relative: 0.0 1.0; + rel2.to: "terminology.bottom_right"; + rel2.relative: 1.0 0.0; + } + description { state: "oneline" 0.0; + rel1.to: "terminology.top_left"; + rel1.relative: 1.0 0.0; + rel2.to: "terminology.bottom_right"; + rel2.relative: 0.0 1.0; + } + } + part { name: "bottom_clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to_y: "terminology.bottom_right"; + rel1.relative: 0.0 0.0; + rel2.to_x: "terminology.bottom_right"; + rel2.relative: 0.0 1.0; + } + description { state: "oneline" 0.0; + visible: 0; + } + } + + // the outline around the selection... +#define TARGETS \ +target: "top_clip"; target: "middle_clip"; target: "bottom_clip"; \ +target: "0.clip"; target: "1.clip"; target: "2.clip"; target: "3.clip"; target: "4.clip" + + part { name: "0.clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "oneline" 0.0; visible: 1; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "disjoint" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "topfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "bottomfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + } + part { name: "1.clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "oneline" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "disjoint" 0.0; visible: 1; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "topfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "bottomfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + } + part { name: "2.clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; visible: 1; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "oneline" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "disjoint" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "topfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "bottomfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + } + part { name: "3.clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "oneline" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "disjoint" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "topfull" 0.0; visible: 1; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "bottomfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + } + part { name: "4.clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "oneline" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "disjoint" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "topfull" 0.0; visible: 0; rel1.offset: -100 -100; rel2.offset: 101 101; } + description { state: "bottomfull" 0.0; visible: 1; rel1.offset: -100 -100; rel2.offset: 101 101; } + } + + // oneline (also multiple lines but all fill the row): + // | ######### | + part { name: "0.left"; + mouse_events: 0; + type: RECT; + clip_to: "0.clip"; + description { state: "default" 0.0; + rel1 { + to_x: "terminology.top_left"; + relative: 1.0 0.0; + offset: -1 -1; + } + rel2 { + to_x: "terminology.top_left"; + relative: 1.0 1.0; + offset: 2 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "0.right"; + mouse_events: 0; + type: RECT; + clip_to: "0.clip"; + description { state: "default" 0.0; + rel1 { + to_x: "terminology.bottom_right"; + relative: 0.0 0.0; + offset: -3 -1; + } + rel2 { + to_x: "terminology.bottom_right"; + relative: 0.0 1.0; + offset: 0 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "0.top"; + mouse_events: 0; + type: RECT; + clip_to: "0.clip"; + description { state: "default" 0.0; + rel1 { + to: "0.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "0.right"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "0.bottom"; + mouse_events: 0; + type: RECT; + clip_to: "0.clip"; + description { state: "default" 0.0; + rel1 { + to: "0.left"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "0.right"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + program { name: "oneline"; + signal: "mode,oneline"; + source: "terminology"; + action: STATE_SET "oneline" 0.0; + TARGETS; + } + + // disjoint: + // | #######| + // |## | + part { name: "1.left"; + mouse_events: 0; + type: RECT; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "terminology.top_left"; + relative: 1.0 0.0; + offset: -1 -1; + } + rel2 { + to: "terminology.top_left"; + relative: 1.0 1.0; + offset: 2 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.right"; + mouse_events: 0; + type: RECT; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to_y: "terminology.top_left"; + relative: 1.0 0.0; + offset: -4 -1; + } + rel2 { + to_y: "terminology.top_left"; + relative: 1.0 1.0; + offset: -1 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.top"; + mouse_events: 0; + type: RECT; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "1.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "1.right"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.bottom"; + mouse_events: 0; + type: RECT; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "1.left"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "1.right"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.left2"; + mouse_events: 0; + type: RECT; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to_y: "terminology.bottom_right"; + offset: -1 -1; + } + rel2 { + to_y: "terminology.bottom_right"; + relative: 0.0 1.0; + offset: 2 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.right2"; + mouse_events: 0; + type: RECT; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "terminology.bottom_right"; + relative: 0.0 0.0; + offset: -3 -1; + } + rel2 { + to: "terminology.bottom_right"; + relative: 0.0 1.0; + offset: 0 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.top2"; + mouse_events: 0; + type: RECT; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "1.left2"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "1.right2"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "1.bottom2"; + mouse_events: 0; + type: RECT; + clip_to: "1.clip"; + description { state: "default" 0.0; + rel1 { + to: "1.left2"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "1.right2"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + program { name: "disjoint"; + signal: "mode,disjoint"; + source: "terminology"; + action: STATE_SET "disjoint" 0.0; + TARGETS; + } + + // default: + // | ###########| + // |######### | + part { name: "2.topkink"; + mouse_events: 0; + type: RECT; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + relative: 0.0 0.0; + offset: -4 -1; + } + rel2 { + to: "top_clip"; + relative: 0.0 1.0; + offset: 2 2; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.bottomkink"; + mouse_events: 0; + type: RECT; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "bottom_clip"; + relative: 1.0 0.0; + offset: -3 -3; + } + rel2 { + to: "bottom_clip"; + relative: 1.0 1.0; + offset: 3 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.left"; + mouse_events: 0; + type: RECT; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "middle_clip"; + offset: -1 -1; + } + rel2 { + to: "bottom_clip"; + relative: 0.0 1.0; + offset: 2 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.right"; + mouse_events: 0; + type: RECT; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + relative: 1.0 0.0; + offset: -3 -1; + } + rel2 { + to: "middle_clip"; + offset: 0 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.top"; + mouse_events: 0; + type: RECT; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "2.topkink"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "2.right"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.top2"; + mouse_events: 0; + type: RECT; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "2.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "2.topkink"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.bottom"; + mouse_events: 0; + type: RECT; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "2.left"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "2.bottomkink"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "2.bottom2"; + mouse_events: 0; + type: RECT; + clip_to: "2.clip"; + description { state: "default" 0.0; + rel1 { + to: "2.bottomkink"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "2.right"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + program { name: "multiline"; + signal: "mode,multiline"; + source: "terminology"; + action: STATE_SET "default" 0.0; + TARGETS; + } + + // topfull: + // |##############| + // |###### | + part { name: "3.bottomkink"; + mouse_events: 0; + type: RECT; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "bottom_clip"; + relative: 1.0 0.0; + offset: -3 -3; + } + rel2 { + to: "bottom_clip"; + relative: 1.0 1.0; + offset: 3 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "3.left"; + mouse_events: 0; + type: RECT; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + offset: -1 -1; + } + rel2 { + to: "bottom_clip"; + relative: 0.0 1.0; + offset: 2 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "3.right"; + mouse_events: 0; + type: RECT; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + relative: 1.0 0.0; + offset: -3 -1; + } + rel2 { + to: "middle_clip"; + offset: 0 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "3.top"; + mouse_events: 0; + type: RECT; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "3.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "3.right"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "3.bottom"; + mouse_events: 0; + type: RECT; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "3.left"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "3.bottomkink"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "3.bottom2"; + mouse_events: 0; + type: RECT; + clip_to: "3.clip"; + description { state: "default" 0.0; + rel1 { + to: "3.bottomkink"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "3.right"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + program { name: "topfull"; + signal: "mode,topfull"; + source: "terminology"; + action: STATE_SET "topfull" 0.0; + TARGETS; + } + + // bottomfull: + // | ######| + // |##############| + part { name: "4.topkink"; + mouse_events: 0; + type: RECT; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + relative: 0.0 0.0; + offset: -4 -1; + } + rel2 { + to: "top_clip"; + relative: 0.0 1.0; + offset: 2 2; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "4.left"; + mouse_events: 0; + type: RECT; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "middle_clip"; + offset: -1 -1; + } + rel2 { + to: "bottom_clip"; + relative: 0.0 1.0; + offset: 2 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "4.right"; + mouse_events: 0; + type: RECT; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "top_clip"; + relative: 1.0 0.0; + offset: -3 -1; + } + rel2 { + offset: 0 0; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "4.top"; + mouse_events: 0; + type: RECT; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "4.topkink"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "4.right"; + relative: 0.0 0.0; + offset: -1 3; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "4.top2"; + mouse_events: 0; + type: RECT; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "4.left"; + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + to: "4.topkink"; + relative: 0.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + } + description { state: "pulse" 0.0; + inherit: "default" 0.0; + color: OUTCOL2; + } + } + part { name: "4.bottom"; + mouse_events: 0; + type: RECT; + clip_to: "4.clip"; + description { state: "default" 0.0; + rel1 { + to: "4.left"; + relative: 1.0 1.0; + offset: 0 -4; + } + rel2 { + to: "4.right"; + relative: 1.0 1.0; + offset: -1 -1; + } + color: OUTCOL; + } + } + program { name: "bottomfull"; + signal: "mode,bottomfull"; + source: "terminology"; + action: STATE_SET "bottomfull" 0.0; + TARGETS; + } + +#define SELPULSE \ +target: "background_top"; \ +target: "background_middle"; \ +target: "background_bottom"; \ +target: "0.left"; \ +target: "0.right"; \ +target: "0.top"; \ +target: "0.bottom"; \ +target: "1.left"; \ +target: "1.right"; \ +target: "1.top"; \ +target: "1.bottom"; \ +target: "1.left2"; \ +target: "1.right2"; \ +target: "1.top2"; \ +target: "1.bottom2"; \ +target: "2.topkink"; \ +target: "2.bottomkink"; \ +target: "2.left"; \ +target: "2.right"; \ +target: "2.top2"; \ +target: "2.top"; \ +target: "2.bottom"; \ +target: "2.bottom2"; \ +target: "3.bottomkink"; \ +target: "3.left"; \ +target: "3.right"; \ +target: "3.top"; \ +target: "3.bottom"; \ +target: "3.bottom2"; \ +target: "4.topkink"; \ +target: "4.left"; \ +target: "4.right"; \ +target: "4.top2"; \ +target: "4.top"; \ +target: "4.bottom" + + program { name: "selpulse"; + signal: "show"; + source: ""; + action: STATE_SET "pulse" 0.0; + transition: LINEAR 1.0; + SELPULSE; + after: "selpulse2"; + } + program { name: "selpulse2"; + action: STATE_SET "default" 0.0; + SELPULSE; + after: "selpulse"; + } + + // top and bottom swallows used to coimmunicate via min/max size the + // size of the top and bottom lines + part { name: "terminology.top_left"; type: SWALLOW; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel2.relative: 0.0 0.0; + visible: 0; + } + } + part { name: "terminology.bottom_right"; type: SWALLOW; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 1.0 1.0; + visible: 0; + } + } + + // blinky cursors indicating you can drag the ends of the selection + part { name: "cursor.top_left"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "terminology.top_left"; + rel1.relative: 1.0 0.0; + rel2.to: "terminology.top_left"; + rel2.relative: 1.0 1.0; + rel2.offset: 0 -1; + color: 255 0 0 128; + } + } + part { name: "cursor_blink.top_left"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "cursor.top_left"; + rel2.to: "cursor.top_left"; + visible: 0; + } + description { state: "fading" 0.0; + inherit: "default" 0.0; + color: 255 0 0 255; + visible: 1; + } + description { state: "fading" 1.0; + inherit: "fading" 0.0; + color: 255 0 0 64; + rel1.offset: -5 0; + } + } + part { name: "zone.top_left"; type: RECT; + description { state: "default" 0.0; + rel1.to: "cursor.top_left"; + rel1.offset: -15 0; + rel2.to: "cursor.top_left"; + rel2.offset: 15 0; + color: 0 0 0 0; + } + program { name: "top_left.blink"; + signal: "mouse,in"; + source: "zone.top_left"; + action: STATE_SET "fading" 0.0; + target: "cursor_blink.top_left"; + after: "top_left.fade"; + } + program { name: "top_left.fade"; + action: STATE_SET "fading" 1.0; + transition: LINEAR 0.3; + target: "cursor_blink.top_left"; + after: "top_left.blink"; + } + program { name: "top_left.stop"; + signal: "mouse,out"; + source: "zone.top_left"; + action: STATE_SET "default" 0.0; + target: "cursor_blink.top_left"; + } + } + part { name: "cursor.bottom_right"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "terminology.bottom_right"; + rel1.relative: 0.0 0.0; + rel1.offset: -1 0; + rel2.to: "terminology.bottom_right"; + rel2.relative: 0.0 1.0; + rel2.offset: -1 -1; + color: 255 0 0 128; + } + } + part { name: "cursor_blink.bottom_right"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "cursor.bottom_right"; + rel2.to: "cursor.bottom_right"; + visible: 0; + } + description { state: "fading" 0.0; + inherit: "default" 0.0; + color: 255 0 0 255; + visible: 1; + } + description { state: "fading" 1.0; + inherit: "fading" 0.0; + color: 255 0 0 64; + rel2.offset: +5 0; + } + } + part { name: "zone.bottom_right"; type: RECT; + description { state: "default" 0.0; + rel1.to: "cursor.bottom_right"; + rel1.offset: -15 0; + rel2.to: "cursor.bottom_right"; + rel2.offset: 15 0; + color: 0 0 0 0; + } + program { name: "bottom_right.blink"; + signal: "mouse,in"; + source: "zone.bottom_right"; + action: STATE_SET "fading" 0.0; + target: "cursor_blink.bottom_right"; + after: "bottom_right.fade"; + } + program { name: "bottom_right.fade"; + action: STATE_SET "fading" 1.0; + transition: LINEAR 0.3; + target: "cursor_blink.bottom_right"; + after: "bottom_right.blink"; + } + program { name: "bottom_right.stop"; + signal: "mouse,out"; + source: "zone.bottom_right"; + action: STATE_SET "default" 0.0; + target: "cursor_blink.bottom_right"; + } + } + } + } + +////////////////////////////////////////////////////////////////////////////// + //// an object overlayd on text that is a link + group { name: "terminology/link"; + images { + image: "lk_bottom.png" COMP; + image: "lk_left.png" COMP; + image: "lk_right.png" COMP; + } + parts { + part { name: "bottom"; + mouse_events: 0; + description { state: "default" 0.0; + image.normal: "lk_bottom.png"; + image.border: 9 9 0 0; + align: 0.5 1.0; + min: 20 8; + rel1.offset: -6 0; + rel1.relative: 0.0 1.0; + rel2.offset: 5 0; + color: 100 200 255 255; + fill.smooth: 0; + } + } + part { name: "l"; + mouse_events: 0; + description { state: "default" 0.0; + image.normal: "lk_left.png"; + align: 0.0 1.0; + min: 4 4; + rel1.offset: 16 -1; + rel1.relative: 0.0 1.0; + rel2.offset: 16 -1; + rel2.relative: 0.0 1.0; + color: 100 200 255 0; + } + description { state: "out" 0.0; + inherit: "default" 0.0; + min: 16 16; + rel1.offset: -10 -1; + rel2.offset: -10 -1; + color: 180 220 255 255; + } + description { state: "out2" 0.0; + inherit: "default" 0.0; + min: 32 32; + rel1.offset: -26 -1; + rel2.offset: -26 -1; + color: 100 200 255 0; + } + } + part { name: "r"; + mouse_events: 0; + description { state: "default" 0.0; + image.normal: "lk_right.png"; + align: 1.0 1.0; + min: 4 4; + rel1.offset: -15 0; + rel1.relative: 1.0 1.0; + rel2.offset: -15 0; + rel2.relative: 1.0 1.0; + color: 100 200 255 0; + } + description { state: "out" 0.0; + inherit: "default" 0.0; + min: 16 16; + rel1.offset: 9 -1; + rel2.offset: 9 -1; + color: 180 220 255 255; + } + description { state: "out2" 0.0; + inherit: "default" 0.0; + min: 32 32; + rel1.offset: 25 -1; + rel2.offset: 25 -1; + color: 100 200 255 0; + } + } + part { name: "event"; type: RECT; + mouse_events: 1; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + programs { + program { name: "show"; + signal: "show"; + source: ""; + action: STATE_SET "out" 0.0; + transition: LINEAR 0.3; + target: "l"; + target: "r"; + after: "show2"; + } + program { name: "show2"; + action: STATE_SET "default" 0.0; + action: STATE_SET "out2" 0.0; + transition: LINEAR 0.3; + target: "l"; + target: "r"; + after: "show3"; + } + program { name: "show3"; + action: STATE_SET "default" 0.0; + target: "l"; + target: "r"; + after: "show"; + } + } + } + } + +////////////////////////////////////////////////////////////////////////////// + //// the multimedia controls + group { name: "terminology/mediabusy"; + images { + image: "media_busy_knob.png" COMP; + image: "media_busy_spinner.png" COMP; + image: "media_busy_progress.png" COMP; + } + script { + public message(Msg_Type:type, id, ...) { + if ((type == MSG_FLOAT) && (id == 1)) { + new Float:val; + val = getfarg(2); + // val 0.0 -. 1.0 percentage + custom_state(PART:"progress", "default", 0.0); + set_state_val(PART:"progress", STATE_REL2, val, 1.0); + set_state(PART:"progress", "custom", 0.0); + } + } + } + parts { + part { name: "progress_area"; type: SPACER; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + rel2.to_x: "knob"; + rel2.relative: 0.0 1.0; + min: 10 40; + max: 99999 40; + align: 0.0 1.0; + } + } + part { name: "progress"; + mouse_events: 0; + clip_to: "fade"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "progress_area"; + rel2.to: "progress_area"; + rel2.relative: 0.0 1.0; + color: 100 160 255 255; + image.normal: "media_busy_progress.png"; + image.border: 5 5 0 0; + min: 10 40; + align: 0.0 1.0; + } + } + part { name: "fade"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + color: 255 255 255 0; + visible: 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { name: "knob"; + clip_to: "fade"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + image.normal: "media_busy_knob.png"; + min: 40 40; + max: 40 40; + align: 1.0 1.0; + } + } + part { name: "knob_spinner"; + clip_to: "fade"; + mouse_events: 0; + description { state: "default" 0.0; + fixed: 1 1; + color: 100 160 255 255; + rel1.to: "knob"; + rel2.to: "knob"; + image.normal: "media_busy_spinner.png"; + map { + on: 1; + smooth: 1; + rotation.center: "knob"; + } + } + description { state: "spin" 0.0; + inherit: "default" 0.0; + visible: 1; + map.rotation.z: 360; + } + } + } + programs { + program { name: "busy"; + signal: "busy"; + source: "terminology"; + action: STATE_SET "visible" 0.0; + transition: DECELERATE 0.5; + target: "fade"; + } + program { name: "spin1"; + signal: "busy"; + source: "terminology"; + action: STATE_SET "spin" 0.0; + transition: LINEAR 0.5; + target: "knob_spinner"; + after: "spin2"; + } + program { name: "spin2"; + action: STATE_SET "default" 0.0; + target: "knob_spinner"; + after: "spin1"; + } +// program { name: "downloading"; +// signal: "busy"; +// source: "terminology"; +// action: STATE_SET "default" 0.0; +// } + program { name: "done"; + signal: "done"; + source: "terminology"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 1.5; + target: "fade"; + } + } + } +////////////////////////////////////////////////////////////////////////////// + //// the multimedia controls + group { name: "terminology/mediactrl"; + images { + image: "media_bg.png" COMP; + image: "media_play.png" COMP; + image: "media_stop.png" COMP; + image: "media_pause.png" COMP; + image: "media_line.png" COMP; + image: "media_knob_vol.png" COMP; + image: "media_knob_pos.png" COMP; + } + parts { + part { name: "media_clip"; type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to: "media_bg"; + rel2.to: "media_bg"; + } + } + part { name: "media_bg"; + clip_to: "media_clip"; + description { state: "default" 0.0; + image.normal: "media_bg.png"; + image.border: 11 11 11 11; + min: 24 24; + max: 24 24; + align: 1.0 0.0; + } + description { state: "expanded" 0.0; + inherit: "default" 0.0; + min: 216 24; + max: 216 24; + } + } + part { name: "play"; + mouse_events: 1; + repeat_events: 1; + clip_to: "media_clip"; + description { state: "default" 0.0; + image.normal: "media_pause.png"; + max: 24 24; + align: 1.0 0.0; + } + description { state: "paused" 0.0; + inherit: "default" 0.0; + image.normal: "media_play.png"; + } + } + part { name: "stop"; + mouse_events: 1; + repeat_events: 1; + clip_to: "media_clip"; + description { state: "default" 0.0; + image.normal: "media_stop.png"; + max: 24 24; + rel1.to: "play"; + rel2.to: "play"; + rel1.offset: -16 0; + rel2.offset: -16 0; + } + } + part { name: "posline"; + mouse_events: 0; + repeat_events: 1; + clip_to: "media_clip"; + description { state: "default" 0.0; + image.normal: "media_line.png"; + image.border: 15 15 0 0; + min: 90 14; + max: 90 14; + rel1.to: "stop"; + rel2.to: "stop"; + rel1.offset: -25 0; + rel2.offset: -90 0; + } + } + part { name: "terminology.posdrag"; + mouse_events: 1; + repeat_events: 1; + clip_to: "media_clip"; + dragable { + confine: "posline"; + x: 1 1 0; + y: 0 0 0; + } + description { state: "default" 0.0; + image.normal: "media_knob_pos.png"; + min: 14 14; + max: 14 14; + } + description { state: "muted" 0.0; + visible: 0; + } + } + part { name: "volline"; + mouse_events: 0; + repeat_events: 1; + clip_to: "media_clip"; + description { state: "default" 0.0; + image.normal: "media_line.png"; + image.border: 15 15 0 0; + min: 60 14; + max: 60 14; + rel1 { + to: "posline"; + offset: -25 0; + } + rel2 { + to: "posline"; + relative: 0.0 1.0; + offset: -60 0; + } + } + } + part { name: "terminology.voldrag"; type: IMAGE; + mouse_events: 1; + repeat_events: 1; + clip_to: "media_clip"; + dragable { + confine: "volline"; + x: 1 1 0; + y: 0 0 0; + } + description { state: "default" 0.0; + image.normal: "media_knob_vol.png"; + min: 14 14; + max: 14 14; + } + description { state: "muted" 0.0; + visible: 0; + } + } + } + programs { + program { name: "media_mouse_in"; + signal: "mouse,in"; + source: "media_bg"; + action: STATE_SET "expanded" 0.0; + transition: SINUSOIDAL 0.4 CURRENT; + target: "media_bg"; + } + program { name: "media_mouse_out"; + signal: "mouse,out"; + source: "media_bg"; + action: STATE_SET "default" 0.0; + transition: SINUSOIDAL 0.4 CURRENT; + target: "media_bg"; + } + program { name: "media_pause_click"; + signal: "mouse,up,*"; + source: "play"; + filter: "play" "default"; + action: SIGNAL_EMIT "pause" ""; + } + program { name: "media_play_click"; + signal: "mouse,up,1"; + source: "play"; + filter: "play" "paused"; + action: SIGNAL_EMIT "play" ""; + } + program { name: "media_stop_click"; + signal: "mouse,up,1"; + source: "stop"; + action: SIGNAL_EMIT "stop" ""; + } + program { name: "media_signal_pause"; + signal: "pause,set"; + source: "terminology"; + action: STATE_SET "paused" 0.0; + target: "play"; + } + program { name: "media_signal_play"; + signal: "play,set"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "play"; + } + program { name: "media_signal_mute"; + signal: "mute,set"; + source: "terminology"; + action: STATE_SET "muted" 0.0; + target: "terminology.voldrag"; + } + program { name: "media_signal_unmute"; + signal: "mute,unset"; + source: "terminology"; + action: STATE_SET "default" 0.0; + target: "terminology.voldrag"; + } + } + } + +////////////////////////////////////////////////////////////////////////////// + //// used in the font selection dialog to give a base for black text + //// previews so they are always visible + group { name: "terminology/fontpreview"; + images { + image: "fn_shadow.png" COMP; + } + parts { + part { name: "shadow"; + mouse_events: 0; + description { state: "default" 0.0; + rel1 { + offset: -2 -1; + to: "base"; + } + rel2 { + offset: 1 2; + to: "base"; + } + image { + normal: "fn_shadow.png"; + border: 5 5 5 5; + } + fill.smooth: 0; + } + } + part { name: "base"; type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + color: 255 255 255 255; + rel1.offset: 2 2; + rel2.offset: -3 -3; + } + } + part { name: "clip"; type: RECT; + description { state: "default" 0.0; + rel1.to: "base"; + rel2.to: "base"; + color: 255 255 255 255; + } + } + part { name: "terminology.text.preview"; type: SWALLOW; + clip_to: "clip"; + description { state: "default" 0.0; + rel1 { + to: "base"; + offset: 1 1; + } + rel2 { + to: "base"; + offset: -2 -2; + } + } + } + } + } +} +#include "nyancursor.edc" +#include "about.edc"