From aab7c1a4c76fae9c9ee6c1cfb842512941cf4289 Mon Sep 17 00:00:00 2001 From: Antoine Jacques Date: Tue, 7 Jul 2020 02:07:28 +0200 Subject: [PATCH 1/3] Odoo One Click App (#212) * Odoo One Click App * Odoo resolve conversation --- public/v2/apps/odoo.json | 76 +++++++++++++++++++++++++++++++++++++++ public/v2/logos/odoo.png | Bin 0 -> 20123 bytes 2 files changed, 76 insertions(+) create mode 100644 public/v2/apps/odoo.json create mode 100644 public/v2/logos/odoo.png diff --git a/public/v2/apps/odoo.json b/public/v2/apps/odoo.json new file mode 100644 index 0000000..21c772c --- /dev/null +++ b/public/v2/apps/odoo.json @@ -0,0 +1,76 @@ +{ + "captainVersion": "2", + "documentation": "https://hub.docker.com/_/odoo?tab=description", + "description": "Odoo, formerly known as OpenERP, is a suite of open-source business apps written in Python and released under the AGPL license.", + "dockerCompose": { + "version": "3.8", + "services": { + "$$cap_appname-db": { + "image": "postgres:$$cap_postgres_version", + "notExposeAsWebApp": "true", + "volumes": ["$$cap_appname-db-data:/var/lib/postgresql/data"], + "restart": "always", + "environment": { + "POSTGRES_USER": "odoo", + "POSTGRES_PASSWORD": "$$cap_postgres_password", + "POSTGRES_DB": "postgres" + } + }, + "$$cap_appname": { + "image": "odoo:$$cap_odoo_version", + "containerHttpPort": "8069", + "depends_on": ["$$cap_appname-db"], + "volumes": [ + "$$cap_appname-odoo-web-data:/var/lib/odoo", + "$$cap_appname-config:/etc/odoo", + "$$cap_appname-addons:/mnt/extra-addons" + ], + "restart": "always", + "environment": { + "POSTGRES_PASSWORD": "$$cap_postgres_password", + "HOST": "srv-captain--$$cap_appname-db" + } + } + }, + "volumes": { + "$$cap_appname-odoo-web-data": {}, + "$$cap_appname-config": {}, + "$$cap_appname-addons": {}, + "$$cap_appname-db-data": {} + } + }, + "networks": { + "db": { + "driver": "bridge" + }, + "search": { + "driver": "bridge" + } + }, + "instructions": { + "start": "Odoo is an open source product CRM", + "end": "Odoo is deployed and the dashboard is available from http://$$cap_appname.$$cap_root_domain." + }, + "variables": [ + { + "id": "$$cap_postgres_version", + "label": "Postgres Version", + "defaultValue": "9.6.18-alpine", + "description": "Checkout their docker page for the valid tags https://hub.docker.com/r/library/postgres/tags/", + "validRegex": "/^([^\\s^\\/])+$/" + }, + { + "id": "$$cap_postgres_password", + "label": "Postgres Password", + "description": "", + "validRegex": "/.{1,}/" + }, + { + "id": "$$cap_odoo_version", + "label": "Odoo Version", + "defaultValue": "13.0", + "description": "Checkout their docker page for the valid tags https://hub.docker.com/_/odoo?tab=tags", + "validRegex": "/^([^\\s^\\/])+$/" + } + ] +} diff --git a/public/v2/logos/odoo.png b/public/v2/logos/odoo.png new file mode 100644 index 0000000000000000000000000000000000000000..66267f6e72845c7b551e73d8f3bcb3982d5d0e44 GIT binary patch literal 20123 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 A?f?J) literal 0 HcmV?d00001 From 1df53c9c194e540618af273d32e1f89eba2a8493 Mon Sep 17 00:00:00 2001 From: Antoine Jacques Date: Tue, 7 Jul 2020 02:37:05 +0200 Subject: [PATCH 2/3] Mailtrain One Click App (#216) * Mailtrain One Click App * Update mailtrain.json documentation field * Update mailtrain.json description tags mailtrain * update regex appname --- public/v2/apps/mailtrain.json | 131 ++++++++++++++++++++++++++++++++++ public/v2/logos/mailtrain.png | Bin 0 -> 5772 bytes 2 files changed, 131 insertions(+) create mode 100644 public/v2/apps/mailtrain.json create mode 100644 public/v2/logos/mailtrain.png diff --git a/public/v2/apps/mailtrain.json b/public/v2/apps/mailtrain.json new file mode 100644 index 0000000..9e0912d --- /dev/null +++ b/public/v2/apps/mailtrain.json @@ -0,0 +1,131 @@ +{ + "captainVersion": "2", + "documentation": "Taken from https://github.com/Mailtrain-org/mailtrain/blob/development/docker-compose.yml", + "displayName": "Mailtrain V2(Beta)", + "description": "Mailtrain is a self hosted newsletter application built on Node.js (v10+) and MySQL (v8+) or MariaDB (v10+).", + "dockerCompose": { + "version": "3.8", + "services": { + "$$cap_appname-db": { + "image": "mariadb:$$cap_mariadb_version", + "notExposeAsWebApp": "true", + "volumes": ["$$cap_appname-db-data:/var/lib/mysql"], + "restart": "always", + "environment": { + "MYSQL_ROOT_PASSWORD": "$$cap_mariadb_password", + "MYSQL_DATABASE": "mailtrain", + "MYSQL_USER": "mailtrain", + "MYSQL_PASSWORD": "$$cap_mariadb_password" + } + }, + "$$cap_appname-redis": { + "notExposeAsWebApp": "true", + "image": "redis:$$cap_redis_version", + "volumes": ["$$cap_appname-redis-data:/data"], + "restart": "always" + }, + "$$cap_appname-mongo": { + "notExposeAsWebApp": "true", + "image": "mongo:$$cap_mongo_version", + "volumes": ["$$cap_appname-mongo-data:/data/db"], + "restart": "always" + }, + "$$cap_appname": { + "image": "mailtrain/mailtrain:$$cap_mailtrain_version", + "containerHttpPort": "3000", + "depends_on": [ + "$$cap_appname-db", + "$$cap_appname-redis", + "$$cap_appname-mongo" + ], + "volumes": ["$$cap_appname-files:/app/server/files"], + "environment": { + "URL_BASE_TRUSTED": "https://$$cap_appname.$$cap_root_domain", + "URL_BASE_SANDBOX": "https://$$cap_appname-$$cap_mailtrain_sandbox-appname.$$cap_root_domain", + "URL_BASE_PUBLIC": "https://$$cap_appname-$$cap_mailtrain_lists-appname.$$cap_root_domain", + "WWW_PROXY": true, + "MONGO_HOST": "srv-captain--$$cap_appname-mongo", + "REDIS_HOST": "srv-captain--$$cap_appname-redis", + "MYSQL_HOST": "srv-captain--$$cap_appname-db", + "MYSQL_PASSWORD": "$$cap_mariadb_password" + } + }, + "$$cap_appname-$$cap_mailtrain_sandbox-appname": { + "image": "caprover/nginx-reverse-proxy:latest", + "restart": "always", + "depends_on": ["$$cap_appname"], + "environment": { + "UPSTREAM_HTTP_ADDRESS": "http://srv-captain--$$cap_appname:3003" + } + }, + "$$cap_appname-$$cap_mailtrain_lists-appname": { + "image": "caprover/nginx-reverse-proxy:latest", + "restart": "always", + "depends_on": ["$$cap_appname"], + "environment": { + "UPSTREAM_HTTP_ADDRESS": "http://srv-captain--$$cap_appname:3004" + } + } + }, + "volumes": { + "$$cap_appname-db-data": {}, + "$$cap_appname-redis-data": {}, + "$$cap_appname-mongo-data": {}, + "$$cap_appname-files": {} + } + }, + "instructions": { + "start": "Mailtrain is a self hosted newsletter application built on Node.js (v10+) and MySQL (v8+) or MariaDB (v10+).", + "end": "You can connect to http://$$cap_appname.$$cap_root_domain with the user admin and password test. Do not forget to update it with something more secure." + }, + "variables": [ + { + "id": "$$cap_mariadb_version", + "label": "Mariadb Version", + "defaultValue": "10.5.4", + "description": "Check out their Docker page for the valid tags https://hub.docker.com/_/mariadb?tab=tags", + "validRegex": "/^([^\\s^\\/])+$/" + }, + { + "id": "$$cap_mariadb_password", + "label": "Mariadb User password", + "description": "", + "validRegex": "/.{1,}/" + }, + { + "id": "$$cap_redis_version", + "label": "Redis Version", + "defaultValue": "alpine3.12", + "description": "Check out their Docker page for the valid tags https://hub.docker.com/_/redis?tab=tags", + "validRegex": "/^([^\\s^\\/])+$/" + }, + { + "id": "$$cap_mongo_version", + "label": "Mongo Version", + "defaultValue": "4.4.0-rc11", + "description": "Check out their Docker page for the valid tags https://hub.docker.com/_/mongo?tab=tags", + "validRegex": "/^([^\\s^\\/])+$/" + }, + { + "id": "$$cap_mailtrain_version", + "label": "Mailtrain Version", + "defaultValue": "latest", + "description": "Check out their Docker page for the valid tags https://hub.docker.com/r/mailtrain/mailtrain/tags", + "validRegex": "/^([^\\s^\\/])+$/" + }, + { + "id": "$$cap_mailtrain_sandbox-appname", + "label": "Sandbox Mailtrain App Name", + "defaultValue": "sdbx", + "description": "", + "validRegex": "/^[a-z]{1,}$/" + }, + { + "id": "$$cap_mailtrain_lists-appname", + "label": "Public Mailtrain App Name", + "defaultValue": "lists", + "description": "", + "validRegex": "/^[a-z]{1,}$/" + } + ] +} diff --git a/public/v2/logos/mailtrain.png b/public/v2/logos/mailtrain.png new file mode 100644 index 0000000000000000000000000000000000000000..ede02ff824ae93f29fced2cdaf05ca89697b70a8 GIT binary patch literal 5772 zcmY*-1z1#F*Y*$s(x{}AfS@Qdlpx(*3P^V&F?0^yq2Pd&!~oK%)X2~&Fm!j0C>^KW0suP}0Dx!)06^=O z-TYb{yKvV{+0YXJAn*Cxa6UdGe+U5J7&_`2co}G@i&}$SfR;93D_fwSiyPJ&01)>R z#SUF;y)0S%T%27!Mg1h${;?3nj{m|SHr9VkyqqN13^ZP`%7Hy>SziDJfxK*z#H_5W z;vP13qT2F`|8B?5B-k9hyxc@VAYWf!psxTB>|qb$6A=*s@$!TC`FXGwJf8lpUY345 zuAc1waq|EC$lH2adpNpzIf7kT|N6DG0(*N&u(ACm`tS9hIK3S0{y&qe=fASB0zrRQ zKzu-6(0_enw~GHoMYTK}ZL!RM{Y&zR|6}=ouzz{PL4V2rS1|uk`VWegDoHF3`tM_t zBv$X@G6Vn~UNhfj)2 zLV#m7nj2gl^3yS9=m73L2erRF?D_r&j#3Yf2$g|}<9b_PEMBu*r)}*mCLW)iXb`D= z)Pa6EG+_$#Ha94b6Ck3)FPDP>NkjU(#ST-yVM6Zq1-va~o$Ol-05RQm_U<&>snTPa zWbi93Ez`lu8zH?xs#Pauf8r~$*)&DUZ*Oka z_Ujn&w%8iWK#B{*jT6A23Tq&VnL&(BZmaB>*=Gv)xSd|yqmQpMsea)}XToG)1o+x7 zQh5xgROeT{igTJWhb71)hA(6XZ==`_gv0NolZ&58(QKbzY%pauxPEE>l^}rgS0yL@ zTNAs{nH*+@9q8;l1GTl&pdvWA@K;LoP!P8BKmk4|9a7Vbp`}058 zn2m_^K-xUUTPqIXmqT^dDicEWq`0S4Vc!MB_hYtg4kSX8$?V<_ zR>S%lyG>}V-`{qonMEH@t$o~#SvfArNXBLr#!k7#Br&{wNKbb~K{tiov1+N%pgoDN zzl87CHhJwMYTR&fCVr?HOLjaCp)7zTt&l&tflXS|PC_orDHL!2)Zv#4a9|_27p8oD zB#6)&`t`B%8+BoCzeUS${r5?j0-T@OvP{zCMp*O}Gy`06wl%LtSK8mvLKJ@&ALdTQT-LwW|A3wxqCm5eC4y}Dut6Cg031no2(F@mLPLmhy0%*y#1|qTD_OhX)}KAsJ)F*8-QCd18!}da%Pe+M*Piu?#(NsVSTg0oeJ8h#f;!hFP${7#$K>#`3U6Z z55homMWY9Cy1WVTLf19x>V}tE`jOFn+HNP5u`8rO1u$^}J5QZDFO0gn23Y$1!=_~z zvbVL^4mvF$h28T!yNzn=jM}QXaXh;tVoW)$YD&R^<3Agb=~tXW=fCS5*Xd(5j53kG zV`i%l#IHvB-|ZA$Nj!YBnq5iAwtIq`d#?aF)Jxx9 zbKKycWLSvcf36!zM;eN9Rb4~ey~#7^+a7d4ZSm9hUw)pHF@#eh);PZQClz)hZ1T-a z?)XeXvo#rtNnW3>lu3im0uqxokp`?%`lIL2o9*lRx z<33R_eAOz{gIEy{l3lV|uHyBk@ve5*y2>#E%U|)g=R0p&^Y;VC8FIgdy;iAQH7{01 zaTqZmUBS6A4k6VRg1X{q(jB~zJE=?+E_3OR54jH^uRq|uzql^}9!vx6T5bvx zO+CcvKBA`NWT#{7mk|3jydV?bH18&uS5aB##T3fug1+K0Qq!ouOq8B>@|*ht>i#`3 zDn!Cq-tO*w8d16{<{C6ssx_CXw01s($c3b3VKs#eJ^DT+c49sW{_B-Vf> zNDEwm6Bo;ZKJG0qR|yQ;(7cUFQCp!4skLHy%&+czwNqEEC;6OdA%N~|k4zFkSrfvuU?0+gFpjWGT(NQKPJi&uBiwUPmUEwNds;z-rUAF z?n>QsT3@!C%~(RXGOA++21l}JXzSspru}_~<6YIlr$_p}hFt|U!r$s2-95-32y>Qk z=FC-;5+WGF@6PzFDW_kbms%5G^oBIa*!maB@cr%iP7lMcn6D)53D-3T(}TuUau6dV zulU=#m+a$9gf>Nr@aqc)ki^)8+0KaXyWz-<+r0U&XO2H=w>$Tai4lt-kP`Njq&3uh zX7FZ7+#Gd}lYHe;YgB|tiE8>rM6FSa*!8Q`V8)%U>7QuL$c+gScmNlR(QF?0a7j-v zHgq78-JFR2iK_m)2f|YJi${UZc!dX=EJ5cM^SFHXs9hfU3lku9NN2wx4ukL+qT*m+ zkD=y2i`i&q+b-je%35v{h#7P{5t9}hiKE{5Y)U-MyV`1v`uNhdi9Zs9V4ZpAPVzDq z>E2$CZ$V*-w+6QLNHm+FHlw?SM8icuKva%s3SCgP@R;K|%50w>!E87PnvX*NZY(RX zaWr=$gT>z~P#UXL=NuSUi`?GoI%ycq86U9Ak0-?Ixt}sKjaTmQMxceeCD{b$ooFBY zUHRyYZm=-sS{I)E$@jvQfpL1%?HYEXzd3f#Hl z4G6W}W)8FI#kjC9y*=HETv1EOkP1tFH~C7Eg(2b<8yfYrnBxO&%?oBD6-m3N1Fza@PUjFTgcA^%3A{B(2uOiIA=tcczGL_Mt$4ftKJ-~I zyQDK^)-dz1(yq5Mao|xO}Q4jyr6{#I_9XZzoqw%9+ydqtCJrsO1M6B z+IPN(;!_J`6RBFP4PG>jcRhlsKkd~mJKjbTpfPI!X^NWPhdYvK73<2?q_gp{qlA|IqVnv_B5F}pbF%#sB zsVY}UVHMh$sS+{xrmk+=I(#?PVCs?$@$2>p*a1Q7#-U;>_)4iW)#9s8_Je%SA1aaS zmXV&C);>+A=r{TX8@6umbi||kvjDcPkdv7T=DPbb&9`m#YhMaqMI3~meRZUG8p0`5 zBY|6lSUCGxgg6R6AA8MMeSV-rrqE=j{fEOun=Zagi$eO!u-d6bZJZOi_i)zD-dte( z*>v+vESDOh@;kE+4_kw2q(@b^&whaOWkaF*H)oy{J%n;nut!1=-2!`plhDt65n1-I zWmGM`t~Yap+9Zpmq2!N-qPk~ur4}YoLffU?MmVFVIntsR)pfPv{0&0F`_4zl!qJx> zSnQ`S+{ZJi?&p-dzMLecdWovlG=NsQH~6{RQ4c;tNm!zJe}~-3D|5Y)EAaO@H5xtY z?#!o)4G$@6{I2{QX*AFDGh|)m0G9ZyZxtR4tF1bm;Lng`~K_3T_w8g+s*>Wzgv5=5Red{=ss3;O|j| zMw>?esq9JaD$7;Hvs>|#rg*c_;(g;xuLFI8=iF_EKmyUPErGc^B~)fouTs!5^sPyd zoj!um3&Okgx6j2yuhZn=8Z!+KLv3J_0>OQp;DI%rx00rl{)=frug?yaD~1i*Haf<* zU(OnQOc=E!?*HreTG~Iv;mM3u1 z2qp0#=@%cBp5ND9Sw}O+{XPh_S0RjXa(GgC14~qszfIakWM-Sj86p{W-*@cEhm#7s zach*=VWdNmK|C&1L@GbkAJ}mnDf>pCLVcfUSKwt4bt7toGN|(MR5yDG%|}}H8oZes z2ea2veMd6(P$;XRaRj6&;iE4knS9_CrxG$ta0c?KPv6O1TGhVb>GxLUZTySS3l4yeY%+9YA2E{OQs>Y)~lSv=%MCeoz+O`ZP_Om7faO=KW z;`Y!m+|^zgXE6HxP)y_oUD9O}`e3PA$MJMpA#ZWpY4wL(J8Adq#WU!M<_FeyJU3-- z*f&c&ONPS!fS-+yiH1CPJ!X3CYb~Uq$GzeU*U?)?r?RgG@``;$7DlbIB??9%5=*Lo zVo8%;!~;tjwJEZeXtY<#hMqVCD!PnM?ZZfcZ;!k)jqzj@&x&Yq4_1Q6XPF%-8eR;> zNmVH;fLw0IsWnji@edGdYE6|@s<-P2U|m+X{OGkAhGt8+_V0RM@G|^Icj{nrky+8# zVb!GO=v%P!)ANQMqpXf@ciAgfi34Y+J-I=|-Vbl`FZZiA^GD;TBW+O z%4%ve%OK8`?rDw3P0>rOR!{BDGaBOYX=A8NJ}dN|7}0Rz^_xe!26y^QXKD{+3ib7S zyc8)VP)a@M6`m=j*v6#70H_TM=&a(MUpg5JDl9{hvpHpspQboWb0P3k$KJ096k{mdvjtCyt6A$y0%N1eFnAoJDDv0Vs&n zye5L*W+@`mmWw0yb&{or#6WCedEFr5iL;b&U;Z`)~A30_25wTC%Cj8JiUFBgyGSYjxN} zv<2gmUKaVP+NSx~qi+lb&O7e8DO%EE9AIp8KN^oooCoJCpxJ9zdXMp!!r>SNU$W{Q zvaRum16re`9KE2x6>OBLT0do@rLo+SFdtB2LY4K<6=sG^t6r@$a2;__T2wflP08CGBG%Qg2y zJE-vFd29$$O`6HI_5JF3fm*_!XBcL>i~@<}2)SK8(J^clrAmI&W8I5wWFrA=LLaz) z{jOqq%7!u{kZA7pC-L8%qadG36Ae9H^Ujc}I>`?w1dZW})roCa`=vpAm)Lp$b=Y@O zExhGHiYIHLupj>*B;pr`wHb)z0RQD*29^;r4sTn#2fdB4c8RZIl$Aby{wLO*dL0IfE!d`YAq}07Svg9#d13_`c;;d4bVpAVJJo z$J`c}baFQS^V9ZZD(rFnW5#mYo__LXhyj?@@-f;wrf&3MagFdq^dE=h92*Uoe2Z4>1Jh!rZ9$)S#q8qktE_d~|K z53@q})oTjvFeGF+=eUWE$Mc74!KD=A{+P?p5D0GgjhqC}Pbhx&!rkLsb-Z|rDOL|7 tZK?TQj$J`)X$PB*P;8xM3`&HNTKZF0MfO5*?QhLjML|=(TGk@`e*oLRD5wAc literal 0 HcmV?d00001 From 9f09732b9a7ffc90b7849c663746f9f5dae7396a Mon Sep 17 00:00:00 2001 From: Antoine Jacques Date: Tue, 7 Jul 2020 02:38:10 +0200 Subject: [PATCH 3/3] Firefly III One Click App (#217) --- public/v2/apps/firefly-iii.json | 97 ++++++++++++++++++++++++++++++++ public/v2/logos/firefly-iii.png | Bin 0 -> 22027 bytes 2 files changed, 97 insertions(+) create mode 100644 public/v2/apps/firefly-iii.json create mode 100644 public/v2/logos/firefly-iii.png diff --git a/public/v2/apps/firefly-iii.json b/public/v2/apps/firefly-iii.json new file mode 100644 index 0000000..034b310 --- /dev/null +++ b/public/v2/apps/firefly-iii.json @@ -0,0 +1,97 @@ +{ + "captainVersion": "2", + "documentation": "Taken from https://docs.firefly-iii.org/installation/docker", + "description": "Firefly III - A free and open source personal finance manager", + "displayName": "Firefly III", + "dockerCompose": { + "version": "3.8", + "services": { + "$$cap_appname": { + "image": "jc5x/firefly-iii:$$cap_firefly_version", + "containerHttpPort": "8080", + "volumes": [ + "$$cap_appname-export:/var/www/firefly-iii/storage/export", + "$$cap_appname-upload:/var/www/firefly-iii/storage/upload" + ], + "restart": "always", + "depends_on": ["$$cap_appname-db"], + "environment": { + "SITE_OWNER": "$$cap_firefly_site-owner", + "TZ": "$$cap_firefly_time-zone", + "TRUSTED_PROXIES": "**", + "DB_CONNECTION": "mysql", + "DB_PORT": 3306, + "DB_DATABASE": "firefly", + "DB_USERNAME": "firefly", + "DB_HOST": "srv-captain--$$cap_appname-db", + "DB_PASSWORD": "$$cap_mariadb_password", + "APP_KEY": "$$cap_firefly_app-key" + } + }, + "$$cap_appname-db": { + "image": "mariadb:$$cap_mariadb_version", + "notExposeAsWebApp": "true", + "volumes": ["$$cap_appname-db-data:/var/lib/mysql"], + "restart": "always", + "environment": { + "MYSQL_ROOT_PASSWORD": "$$cap_mariadb_password", + "MYSQL_DATABASE": "firefly", + "MYSQL_USER": "firefly", + "MYSQL_PASSWORD": "$$cap_mariadb_password" + } + } + }, + "volumes": { + "$$cap_appname-db-data": {}, + "$$cap_appname-export": {}, + "$$cap_appname-upload": {} + } + }, + + "instructions": { + "start": "Enter your Firefly III Configuration parameters and click on next. It will take about a minute for the process to finish.", + "end": "Firefly III is deployed and available from the url http://$$cap_appname.$$cap_root_domain" + }, + "variables": [ + { + "id": "$$cap_mariadb_version", + "label": "Mariadb Version Tag", + "description": "Check out their Docker page for the valid tags https://hub.docker.com/_/mariadb?tab=tags", + "defaultValue": "10.5.4", + "validRegex": "/^([^\\s^\\/])+$/" + }, + { + "id": "$$cap_mariadb_password", + "label": "Mariadb Password", + "description": "The password of the Mariadb Database\"", + "validRegex": "/.{1,}/" + }, + { + "id": "$$cap_firefly_version", + "label": "Firefly Version Tag", + "description": "Check out their Docker page for the valid tags https://hub.docker.com/r/jc5x/firefly-iii/tags", + "defaultValue": "release-5.3.0", + "validRegex": "/^([^\\s^\\/])+$/" + }, + { + "id": "$$cap_firefly_site-owner", + "label": "Firefly Site Owner Mail", + "description": "The email address of the owner of the app.", + "validRegex": "/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/" + }, + { + "id": "$$cap_firefly_time-zone", + "label": "Time zone", + "description": "The preferred time zone. Check out the available time zone on https://en.wikipedia.org/wiki/List_of_tz_database_time_zones", + "defaultValue": "Europe/Brussels", + "validRegex": "/.{1,}/" + }, + { + "id": "$$cap_firefly_app-key", + "label": "Firefly APP KEY", + "description": "The key from which everything is encrypted. Generate one on https://passwordsgenerator.net/?length=32&symbols=0&numbers=1&lowercase=1&uppercase=1&similar=0&ambiguous=0&client=1&autoselect=0", + "defaultValue": "qSAY3tVhAHgz87gusKFoPbg9hpCnMVTR", + "validRegex": "/^[A-Za-z0-9]{32}$/" + } + ] +} diff --git a/public/v2/logos/firefly-iii.png b/public/v2/logos/firefly-iii.png new file mode 100644 index 0000000000000000000000000000000000000000..8611300e1dc425f6fc07a944850a661c49d45d13 GIT binary patch literal 22027 zcmbrmWmr^gxG=hA=r(VCW!58HB(u!K>;Eyl5 zML767hO>h1djP=gdHfIg#EDAS_sidV2EMI@-TCH+8n;adNdz z-xsF@0D3?X_EO6$V|UThi}=qR>Yh5=lr%a-`amTT?hSk5p@rPS82Pa+DzE?J z8T)w!ItNE&Bs)~IKuJSyE0_|>P_XORFnrPf(=$0Je#6h&+IsWekSqoL7r)wE>qsjJ zJ>&ncpS<<7I#qbE1+ayl!vdEExPj*YJ{~=a6g8ZEsD_DgTnG<9gS!Hg04{U}nuCt8 z0_*|mDK4>>T)-&{Dk2R)y}v4@xfEb#99IGmqQJ@h?HNCuQiZ<+Ns#t>6b11Kr~u-> zx$wYXZe}Ea74#AvVE{xnY-dno!4ECboJrs<5MrAQECPbbp|?O1J{PJu<)*7N7tp1K z4Icycp`!}x2I1ifzl?wps27&0pg00b-fE3teq7x8=z);{j1YD@k&Bu=aqFSRI zGQ+ij9=k^6rK2G#WeIm7qjH!ZU&&tEJZ`hKgTPN9)Hr7`xax0d!+`d0Q7Pw@E+K(%|HXsO34IAt(6FaN;CEa(t>iP~Jn zR?tOBgHv8=BXrz7vLP4Qf#HvR(pzF55@ z0xBgT0{Dk1nTwnU6K|X~qpRE)M*p@l&`^L8D_PD@n{9USs<&QpHkJN-(}MHyRo_K1 zK?VxkyB+ErxSLaLJ8L80hW#b;8R1)>=-opYObhKrBhkG7J+ka_JL+Zvp@8EN%EuN| zrGBUsjWtp#H-FBonaoLmVF+%@GMc?x#;;KrjCo+w!*t@8cJ=CxHvXZvMHn46i7J5w zgx(k%eg+&{q9{AeV7EC15Is?u8^BbA!8q8L>mgCbtpsn-JO;2^NTkF7$F!Htm{RT4 z08a`DS7E;iw$}<#&)2Zt?F3L537`E)8#oAfQgZGj^QZk?P1iRFJEThUtrQ#u?jQ(E z;4fUt>-aysa+#Y+F^!1)Ob{C$E{!mYl6D+naMq^oOQ7i(#GJ=Pl*W6x(qjS56=+X2 z<#ImO%H{T}jC5Q4HBy1Wyv_O2#)<}Yowey?XB!0gq*)>CsPru4Aca|p;A#Zo%eo4x zah+T4C$FBS&0G=@Z0mZ2O}Nx~F>zeHqQGT`Rgp89Vt)X3AG9 z2r8yn((K0x$IR#+xvn83pbi*)B}Wf}uAC1;N-Y;WZ9aK7V@7DPAp?V%A}DFXmKxi5 z?5(FbEs-HQzyKl6irE-_h>YW!rX*t?dh&Q3w_cV{TeNyNWX2NN3_{HAhDs5x^2(K(3U%AXeM)%L90q$gYCRkpCZ^v2 z#Y^xOhSOe90CQ$3G~eP85@?Wf3fmL!Vsu&eWHK<3kpgRcKph#zXu(K`_)J*%08nd&btoA7=3)Bv5fju^H>xF2Oc_!-Mo;u=YVb-q@&65yO ze9$<^kAHE8xoL*lq>|==_=OX30F-sxIH_LjOauw0smeB^f1i)BOTWVdDUX`V!ByVu z%!^Avu&u0j!js3K0|W;;Bt#KW38s7kwRRh3)@_x?Py<7%0`SRrU0tN#W)(aKZ{a1Z zNskOwAjSbt$rvSL;NVewOACV)5D{kGb%phTtJ!`dnZ(2<{dY<*w_edUFoT3ong`<% z)c=}+D+_~(nl)eu(7=O{0(Ag<0s;zrEC96MNM;Zz7|cS73kVMn#|}pU2nZ4&)c|PQ z`RGXj7z~DLF)0cepZdKjEl+_?b#w*E-I*L-wu_TBu)?jGzmTcrmt!ohKE%if{d(!= zoV+K0)@dfJCslG#%T>m|{oR%+UUeY*0 zW-6+Wrl?sWzloZ%jC7DVv!GpU(=X~&W#7u;%1DXyYQH5m;lqAuVWkVirbmf)hx5ag zB+1xqeIFFQ#q8_I#&PZ-*PAsobKC7>b6;6Hdi7JjIdJ01VF{{nx#mH2?#Z+vM- zefeiwgMG0{Ye$Q{2jtG=SSQY_rw7X^<_M(Mrcne-Bl?Xcc%=Cji;T%-`r&u>e>=6; zM@7F9VP3WgxBd~LUOJ`{^t%yNw!#`u_mp$2%pKT%hFons=fPzEW7ET|lV7{$NQfQe z=b5wDiPEnC*WlGi_?O7;nR+i&51vcxKP`ebnW}B<5J}v3MiDaU+GdksMDd@OAtDmP zvPR2M_~}#XJEzipk7rHfJ3Dt1mcM3*sRHOr*z$=XkZdwE|LnL-tPaEyNi9g-dR0YQ zS&ZS=Gwq}uYCe=WbLTHR)0oDZZs=3F6U0V>Vk9A;yamHt305k&y8q4|nC`^UAq?GN zJ8oKq?2tzs6Wy^0k`hC#ka%S})AAWBwBa$5G~H)>u#d4M5F_pSsbU2Uzbf+5r2z8f zg>jsn4zEu9n1>^SKP);Ae_o}EG_ZYEZ72D3(`cWWNbGRCT{(j!#r%@_6gl}|4t{3b z4sYYMlF@+b6%vs`{dqljZlNvyca$osVtDU(np7HnURE6yu2-YM6$snTk%b3wO=e5i zpWZA5n2sFlI^3#B9oqG(Lb1NU|ds-1Z&==Wc4ljdfyawg9AhC+$@ecp2kGh`Ofk8WD_L(X@B6S~FtQP%H zK|n>gLN#YDU%vx+s;MDN3<0;V6v_{GM>g(Td3HqJW>J>iZ7iog^jJDmFBR(2I@}gF zfRb9QJjiHrF`ky{w>&G{`oVJG;GGuB4yox>CQ{Y=RWgPSA*z59tfVOn7?3+F=`E=y zI$m@Is5s4XTihTc`x=#9c`*t;9LD~;D5<>^&QWB_vBf=HG{{xY5A8GW_TUwCyvXUJ z@h3Xc%kaYyHNMkPXdroe;v)oV(CPFME!nEwKj+n;qTo4a(5UMGF!DAs$Z*Y_&h45F zs1)gT7e)0=Iyr`~a{M@R{20_nkrmYL4wgM>IEamOv+;mKG&qezkM&NF-3}!#h{pu7uCS1Bq=~JpuLW`Ws_e~AH&?P_KE%g8A3JS zk>J74h;DEmpPYNQY%d5Y*9Y#tBek_ahtg3WcC!^Y0M#Dde3PSpl)v=%yGC9a>eP>M zyYUiK7wc~MY_=%aFX?`|oZnRIKAt{^rxnVt5lEBE@V1!O#8eRchz? z!_da_N9Oq2-DK9E+NzB|>8lr^O}YGOaMgG4PNcy0#lYVMbH=4+5a-rCpVm~tQpyP{ zkt&xK`K|Ud(+1hx=^@@+#RDv@h>oN5A38TbI==Rv5y zOW#EBmZF=i(@}!Kc^ryVaFPac(bOd;=9J%&_>@Y3k^gSMcnQ$t!2Wd04PizQ^;HAn ztQ@1?xheT}ecLnEYy!7Zz3jV<-;$17>)OjVW>KUNhg%u>9VmPdh*0gci|gIK@QX%$ zr&>CFW+!+*xZKL=78B61kMJ3R(shvU?vuT{?Ut%r4CV}DF}a%-Nj=I&-J0#BO}ufu zwc>jla2d{_j~+!#=5QMmf&yr8|89Il*Z6AxZsvtk$?Z)4&H|~I6X9W3cW2ry!GHtm zup|@iD@og6USm5r>4$&3^PJcB@3;cihpV1IXD+Gmuz)#px*OCympFL_+A7x9sUw7d-(p0RWdd9mzKMaNW(~W=p>zrI*W&4Bp`U-*8_zY z;o9jV7tLN)W?nN#wg>2cngIYG;-^;3Pxn5pXud$I(N$^sa}0CH{1jBpL}>c6A?MY+FpAZ)n54CJU*dy8CkBqaFg9S+rG;a_4N_AQrJFVwQ%vIyqo z!Nr^aRyAZwtP$l{;k)m0>lc-j>#?PYCK}ttSMxr2d6&}^B|R@RKv1$DA(=S(?}&uG z4)fX4#$rBG?4d6Jodll23$CVOyi9e6I*gI!%uta7i&8!zDGjL3^_*AoJAEbz!NUti z(8xm;(4oZshTEsx zzGVm0K4UE9R+*MQ<9BoM(T>VcXT2mS|O%AyoK>rM1sA?%{)AbPRyRF@1N2 zhPOTtE4hKH5{_i#PfT7soOLQkV9CE)A2xCHH`s0a1ga#&-Tx1d?h{q=mT<;jduPJ$ zIl<288`*ohFR14=k=(VHAS7=-xO)-5)XIN+ zZN$uNRj_*U3fl(=?~1S81>Uy0r!3^mrXj@CYLB!#L#+Eu&(n1kqEl`Z46laoK$FZS zz&iE}bgEs^gooxoI2#d$Z+LiZlH?FAN$>@^W3%z)(*x3=<^wAxZrvqJNM$MJpmB#x z<|Lhk*W<2VeNINQ+kIb;p@P4VjRK$p%1LBNszvrxV*XxCSQswHwB?{#Hyc!=Q;3px z!v=-_spgv+BGB!=G(!AlUilOuW%a!^)lGA8ZtiG^69@lYO5;!Oz2trkcayL>FBkys zs5+i+x#&LlRM#N>jMnRJxpO}Nvly~y{`AkbvTZ367(RV&^A`()DsVhfJJ0KfknrIR zRHT!ObfwrQsO2_+l}D5lw^D+ua`O*pe|I%)OHKG#AJ-ywO1i$p(S9O3Jm2|xO=@*B6L47rphp!FKk4r6)=60G5GJ3LUyr529bn@d~srB zdrM}o)x;JGL>;Cve&AN+gHDc%Dd$q^Eq_x0-Lr_I* zi~b>ScMUE>GE6*|fQ`+82-$I*U4o$b3WY>M`-{Z1qM2GZ{%qR1SYSLI0DI z;OK#(M?iDFt>H(e_%hKJ$-Z#DdU_;Gtf?0JN>(oNvII`k;frdW)*e^DvZqt83a|Tm zaZ+|>2b#ejX;+f>b1M}A1)LE_R^oiDD2*>Z=&-9IHhUYIUyu4WsX~LZ z_kh7y!$>A0?N%L+)CKOEivm%87+a2P)@3k)=H#0+#wCjdOb(2A*n2#9)1I{NWX~cm zh%2c|7ht4M2D9~l#q4*XebRX^@cw_-HH@UQ(r)}}monu)5-upl8i|$}!Cjk2cDm7( zjw7VN1tk&R^%EUz`V6ey3!aeQ{kx+%iyHCLahN)2>j>b*dj zsda4#b{J3q$rz#lrbNl_j5$dQY;i|xlQM$Y9Sq*TglZD@()L@cph(pkL>lVmY4Q?%$TB3ATt(HT`hjiDTbLIse;P2ScOb0|Fs~ReH={hFayV9 z274OsX~fl4`G^~MB(=-P=vOY*)Dwa&zgeI^BA;WiC|wO`G^|W@5RX-m6Y`4puB(qJ ziTqIS0R^5I3fhARl&x{x@R)=o?2vLR5kWUD;(3ayI-BMKhyO0oOzYPO%x@8jK-r#G z0k1h9-hJ|Ri)OZ+)L$(IT$2a_qN#gTake)2a9ssFjSQ5?3#q`nY!z;GumAsij$;O) zEI`7c8c+=FGRhtvtJ3Xdg(gQ-2s6l-fT~w>oVn8jb#vfmBNz|4)Zzc$NR*D|>^5Sh zIIGV5sGBv%YcXaJ(YnMW^zAN1zBBQBpY! zL*r(r^vhPF$VbblrDdoW4PVxO0Ic}qvzd4q#zPv0dNG0Qd5r#5zr>ncg7{(6I1I`nlnEg*{Wh|aNAN)(C$i1yk4`;72KGK+w&Dx-xk7qF!T z3QDm;6QB^Dl%yc+dfX!_aJ8WN-X{@-}@sSY>i0#1QbfvFC|I0WzVF zc+L{N?uAm1n?ewd4^;>TK$L_BiCI%4*#=L_HZ21t{b$A@p#91o#5oi5aeXhdbtDS= z)mQq!>?+6$xo;)^qv?HCp-nS^i|kV}z+zX-6Z>?<>1 zzrU@e1{_$u{Y7bC)<*~2&#*PbO1>zKC{X?%@zC(Ks?dScwESVtVuoVeuQ$XH24xd%a4!fXvqp!2(1@9z_GZG~@@P z@Fc5&4@ApgbGZ=_Ion84dxQpe|G4;IRf+>yYXr0FyfvsY#>?`N3VDAKet4yVE8 zx~S=go~>s$C@l|E8=V#n3O_>`Nk9U8ViB_CCZ%7%9W8c2@)WO_3+_0;5nes;ifW8F zdngpxp?^XYY4NB|pELB?Nlo_T=;@uys+0xxS5hCG0u=DxZ9IGEaBU*tT4c}z+>(=V z{zo@o4Uzd$m6oA;5DzNK1=pfBxqsw{=@{$3eX#3%n|+9k&^iayxgV8G*E@=5ZM`}w zASp@NuXTTMaYACKbji!=$oLEUKz4;lQ!{F-j}9IrTAFtY8Q zZIiT%kc9gQ)qgNb)3;Tn>%h;_1DWK(Wn}%IufYSE&y&%rj^Hzx@YAmSM=JG$P6@eY z?wkM%UmcFZu#e(A1+3E{y{$~4{qpKg)!|>{^}$_$a(65ei-oit;(u0O1kIWeVI6n# zYPuGGGB>~Hcz#cP@?cHJL&6DgX^agxEWQGP-Tu#(bF)IWxkaN;blYA$4?}YKWlS{a zab2b8{P2MK&Ks@Ays}!Pca3n_VRQcezred~QvMjTI%SABuGc&ce6{#2 zK=o3re!Em+##R0B(l`p|LmO}W|MjksBfn(d&bO}xE@ku3cE3T2e(m%tfVBTsO;H10 z=wCz-J5hB)QN{L6aUeVztiEW33y7Hqd&R%mfwPqU3-F7fYBF4W_8=^HUwFDF$_pyk z`8gh-a#MYi{SQ=NjqpEilG?-ba~pU&p2}4}7w>Cl_l!C3fy1pvo>k%VV6Er>Tt9;m zkimd!HVpD&w@3OvH#37~x_Y&2OnCJQSe78iegy9bt1Uq;ndCd3m^JcgY(Jq6FD zjIyzMkv`F)8r@v}euy={H~n*8X(+sgZ~QY&a>Z5kKHvM%ttE6ZE=yGheiJzmmj~+c0(+`o5fjtqJxH>&>doxMo zL{R41_;BHSQkg_q`H||I@Q#4ziI<23>ibPe!pGv2%pOlO7Hh4n_~>UEg#GLLduxZ= z?qLbz<|@^$8cDDd&_EWG0s>F*2t12`V<2nWND`65Pwj_AhIkP4&9E~g<$KxI9Xj9( zP80Tz=5jD(UVo%b^?CO}V6PP!9We z?ni8^FHu!SHK!~pYFt+m(`WbSc8%tz2RisKCC{uR5x%B=fK605EQZNMW2HIxB=_=9>)73!i3#49V29>w zKgn1jBGPI0a(b{az{_Psd#&Y;CTX&Q_xQsWo?;J_9=j~_oLK2zC&!&q>lI4?7h=v< zt(dUoCT0Ze#}z8=e*gE{q!%yaP@9+2^UC?E1^1F=^5m@#*Y`Mo)!{x3Sb!NMr}|$| zi~8vvm0saX_c{=w$1Lu&$%R71M)KBi+hwQZQN-q*di}Azzf$5hW+(;#qqZB};Um93 zk;b8$KysSPCH)2*10*zw9d17SEPgPQsH65pqO9A?SK6I3X$-h4U-;8K%d4$8yZMm% zYpQMZ)>vEde=^IMPi4ks?wDF?XhJ+1EEPX2XAx~xXkMlRk=IZ4=Z zXUdnmImGMI5uk~a0!D$G->4G%cAYz$~?s~?EbmweyF z^ubi2G}knq|)>T5!d*&%K^G9=vaj&lQYD{yia1su497fuxoD z6nn?DgJ#gIF(C5_if9_iB)^Ne?UQW#K<3tT`=a?}L@e0HGRK)aof1VUDO6Yf&97Uw z#ea`8+29{jopyNt#>L@wr>KArem|nU`sc&3;FSog=o1>heP1-IC>3vqypBgk{k1k8 z!g%3r!I!%d%_;3#y0xJU_9Mco=FGqLdwek0EXV)9vj8L+g2jZ(@L^S@`4YXPkbL9}Yxrjw2xb{C_iEc1R_ zmoSp7t7^HqegFO)kGqKywQHtpPEx>>Ua*`2Gc0;a6sP3t)MkvVfj5)N{-W7veaSv? zlYa-@Vs=SSYO!kZ&g@yqT=_}`ui@5(FG&NnR^?MWpRql5;r9i0M-gC|UMlsm+L(1z zj`UyK*dh9xNL||{ZXKmZt=$n4=3$?-ke+H0Vm@jSoxBS75anZb&|f_5wJVW-ZD&ZG zAEZ{R?)WM2E+FVcV5!!P+(q(po2aVr+vuTSl{l6>MUEXYU`C%-Y7pa-W?!S2(NR1{ z($T+?2@<@{gW}H5vj@cx0i4Cd;Rzg*f}%;*bAHw zakhN_m}j6Xe=)%#kUPFH{8;xMl9nS(Ro?O* zA}TpYrasZHrVC=z&fiJ;botklHyM4GK%Lm+9F_N4LObNdxDr=!efhezddqhbCU{>! zK?3QM2=?$ubVaAJ zH$Q8nWHI(Nt$L2;&52RSADUnNq_UrACu0E1`bSb6HaFd~eMr~(0#$eFz(v5G^za=CIsYU@qL4qm*XZj)4I<&cYNmnjfiCqzjX0C# zlI)fDQSR%NOMCrnoZ{q@OiG$o*T+Y$cyD(J1M(;AW{nN&$lbWt_$b$>Q~JQ}V(3Oz zSSd-Xa3d=3aCxWgP+3!rHF0QNZLWr^SG%@@Br)Rj4Xv{AUZ)+-XHmWUb?3SAq_L*? zocQJREg0C#%{3o{P6u2iI+xv8H#wWir?29EaQQ$2I{IPpaKX*xlG&P$?>4{x7z>|N zQ|KK2dgJ^lCHQpdRl`k{MGGD)(dd)@kDYrCF-_2 z-4~4Q9-M;QR3S1>iSZgX1%Dg+MMiGJdwG|_$5jSp`~ze$&c(|?8m%u+(+dm-?|*pf zHd348lSQ(4TsEMrUdSlCre0Mu6V^NLtJ5?Y_NnF8`9nP&(krJWl)HU@ys;l?dWF)b zLg3s?@+580dCDTErS3|tWV6dVrxw%CDEr)aD_0_}xV9K6mI3YrnHdp*amxK);#fmB z*jJN8*3_T+1d-JW-CmRhW)Slq^Zy!n#h-8c1w~~ds3Wd6J)Y41<058{Tv|N&J83Bl z$G-Q!ixJxzD~IewZco^YwW{iW$Gr=K&b*~WG|1c^&NqRg8Wms|qpGb6@3op1rOJCS zE%P^ZN0)F{_0FoxTj@tb%XgTkOwdO@n2^BCHlSjomdBH8-9glSTH}8pIu^@cZ{z>bkbkl1(q4eY1-Ru*6k%wpVj0xW#}#ujx6*_aKjGZqy5XPCOYro+o3>3? zkxG{Y_H=K6Lub1tKrTp#idXDIh$iMKPl!IPF z-30U?ef48E&4)#Rr}AT1J6NsY-ONZgRV#m}=_s(l`ek~ZM3S8r1;O)=G%`0{U42d1 z^UX5j_&TTuJEx|$+ zGyJ`JX*ja!g7LxfPq*eFsppEi)2)o3R<{9g31Dnr?K3q8dcO(4`U&t>Zl|^L`?ogZlP5GmunVH1**-V? zp2s+(1H05KEk|u3YFNndxXOrbh0H9{OVHSXZkmC*-yuqFx_@)p=WoX>vIW~rm&f0Z zBKSyDTgP4a-uuFwjW}8Lc4SsHYxwGozZH` zKt5HhR;N%bvaQ29DV`fFn%c=wFm#Hae~(Tbc42yv=%n82#v1GJV7T+UCrx?4W{gC| zJ3DT{s2h8B{$=0S%0hoH%nx_~0FGz)3bn@_+6DqoO%TbutWL61zu?t*Hoq_aOp{k+0iQ5DxVW;OvR!@f;&dB@Xz)z)~sT@C>75 zDMcaf@|3Vp7bM!_pohP=7dfo3D_t4UB}Oz_NZ)GTWhv$-{7&=J<*$Gw44VD>ntT2S z6{)wa0%lhCVbX}rko8eot(5)1d^e$zSDyKQZJsPl{&Ci(4Q%;NZDdUXeSrtovq8*3 z%ivIr@pOI{j2=zu`@2Ahz<{&5cs5+cK71y+FI;6v+QCky$66q8)@U<5f*f65#ajH(sBg_SXN`fTeJ z8_P}|;*Xf$C3CbIRz^)%ka6Qlog^b8#U*hRAScWnKX@M=zOiP`B@Mf_4IH^0m;isb zFoWPTFkaOm+WtVqg~AH&2nc?FDbL3Naqh#;r=tI76X+8anX^cR1(ZQ^*f0@h%lRkc ze0q0W9>;Hvj$q8V8VG;7&HX*^hwWLwpv2#q8Yzlb`@yd9O}o6gw*B75BbEU$Vq0*U zAV-ynE}?Wt5;^=ncKAM@acRFpAn>CV* zkJTr}v>waA>@xJB8iZvHE3NC}CPffnXKy{y0T3=&ZZ{MGoYrvtcdc|-rSMwtlD3R{ z)+t@KL=ZUGLY(MhTmGX;EMCmQx2;kwqMAMn9O^1|_;=_qhA;h2INKGK!Cu#-X&t;U zZ_X5Ag3p(N63YJwcL@zCfNB<{2>(Id%s;PUg++gO+$j19^Q-UqUs zzh1V^oc5^{&7Iv~JY<1fd+cVx$oq5KbdHb7!Kst-*BDg(jY#Q69Ry4Nm>y0%fBXk~ zFDOai2o!0DGt$Bv_Y8;=uz!p+bKGeda8pa3j`8e&7ZLkC2>xuSoD_|za^Hx{cCq=> z*!l1brT;!6JUS8_et4wS;^}6cD%0*>>I(vh6V6)xugBe?eNcL7hs$dcaOO*|kllz;Z`?(^@ZoL9bmVO7t$~DKFsq8a~5ro4eDy4e>}p>Tp1MVT9oz z%Fec*w^^A&1Wpqcf-@fmLt~oMOEpTuv5T0uK2M$9<5s4cRv85`*&Xn2-DP-J?*1TT zmXWdsBqqQSNan{KV8^UW?0&W!u{jO+ov^TcC5)nIY9||IBqG0m5d}^Y5@aCdybo)v zAdNlRh(C0?eJC;JUpea3vjzcm0z;GvvjfuH9erzvwtGslGP>bBlQ0)JeRu{szfJ0| zEg=C@a7^FFxZ!HZ>uY+hc02&@H;DV5jK zGmi6;0;1Dg9ciOy>A0wk)063*pCRe5>W4r6pVL~-_d?9YPbI2MT7oU4Ejk5P5_JDx z><#D7tLFElpNadgj9&ycri5NN!zF>%W@Pev$jToPaN1J330r;B%*<@GRNLwHcu+i7 zm{!vH;Ma;XqNt)%#RFula7-MM$L$B|!`t%CE6m+&Qj7#0(awE^JgPh9ia zV@sX-e?krmRkSS^;WWoGu3x`>%k#U5-TGZkBC2+88fpL+GG+EY=fQfyYzNw-Ak@sLmqEj_W@dR{IH{2eN?8Ed8VksDRC&YLSGW{AXp{o|_)Jd!SMeI)Hj+Z*TAF_-cxIPk2IjOw6Px4dXaC4&nC- z>a4ZHtk98|^xFCC&GgDgES}(@zFY_+lPM&}coX79BE?ir#Bet_Jluyf9oIK&o!$N8 zBMh|@DiuHpc#$I5%ZYLa9y&j}Xas-;mx*EsHm2c|tkNzgJ4NIMx4Q()7&qME}g}=5( zS$Pk!t?|C@h*|1(wN{ib|_&qm`a>TGjB){!!;`b zLNtf@3lv$UqVM0QuZ&?3Y3R%-?P!H}h1wu_?>>K9Zes}O$R5z<{sOX)oLfFC>I_Ns zQ)77x)#hoplh9D=kBUz~vCtgB6gVmK?vd-KC16v&MU9<;gOPXM0LwZ9@ytTN`OLLbxc(eX$x zu@0D?CUMSI4&6zlZ)#g-)Q5CGXYV?0bni29oH&Vd;kEVVBzg)eA3zwH{xuT74?z!j z^N&&NNA#tYlD|MVh^?w>RTcQVM_EMRb8p zI#QtKIm*+Ek%y9D2PkTN_3Gb=J@VgueU5%K$CvPI!4F6GghK6i-B^{9br*3_QQg59 zL}P`X%cD!F?8;Su34~teHE;rXu5lw*t-)%r%!av+CYNt3s(+`Tp-F*2dnN8=o=ep$ z4`pbnoOS3^$#?1-NYD=5&4R6dL;)pI;|g8yzS(YxdC9S>DbORDiaaJ7*?*4d6EEOf zJr}gO`Fo{tZPXpZzhBwTkEm6g$oKz(WkF+n+`fb-ZPOLpYr?9eH8kt}{_5W7p6C8oxl<9mj& zjym_o@T}Tu$Zo;&VUcg?X}AK*%?x0uZ!Dk)cs z5M(;5&qcc=6Rg9OdD9cbVaL8L7cv>kLrE2OfkFdExnD8o&CMDba8c&Lp2HI`;k4-c z2fUM4H1Bj=0-$q(8#n?ru`}T>j~sTJOL#gOG9NkH|mT$`(?we2~O>4fwtMIZ&(BgCNuNc zb=s^x*^rY0^(N3m0_Oc=YeC2Z1#J`=Z$wDiJ4r>bMANk?)MGjx@~o=l@b%TdQeN{P ziN=4>So1{Zn_Q574i3t8qmu!0HtqY+!?H3HQvSo?B4LBYsM=dan)gw@O&jHQ+h{nw zeSK>~LQ5}etxz=A2{jhQAG&HUj|aCI8K3|kKuv%_xQ!yk02cuAERjJ;1G&9AUg2=7 zXei6#kDX-@LlgE#b!G79&pw|6fB41*aj{E8k%s{f8BePXIR^&^tg8$<`sR6x0xh%( z@WM-^45-EMIsgTbm@-6{l&ejMVDV(baY|Ry6^N63Mi7}d^sEmicX2jt93glQJXMq9 zNiYDSkw#y=t$Hw^jM9(*C#Sb8SW^#AF1=2j7#h)azMpCuY% zh(tjsK1VxjDl@sji|m`ZH&|E8O~HTHRi?l0qN<<%yUD5bic-*VfnI=>AakMRpe?4R zhHvbtJid63s!jnZz>5_AiC}AOSi@_rm7F3s{2xo7RoAo-ICVtzK^8u;+08^mEA8%H zUzZ9y9T9Zm={nuc{(*ib!c2{fjNJc&X-EWM9YFuhGX2rXDMCJ(Wqeafv#B;UFiLd( zaL0qra3ccRZtgCJ54v*35zRSF4E8za9jge`?5|!4$BY0}CKSM}F$EhP+F%d_#v`ac9iI zgpdCL1wjs!!-7(k5umCRH%M@5__4s!5ASBYh%E+gmVB+oUpqGk$FZ{Ht+PjdR7}e1 z%In3l49P&2nj_3opoA(w4q2F^@0Q1xW5q_2YrNwXzR$1|-A~Si7ITUh9Yyw+R#b$} z@5znOj*|}IQy9_XBMPju`+hlfB#_jQBhJtrq0F+(ZELY;@vM{uAHGo}@oW@GVmg7W z2k|kQQ~Wql7|{0y0!tL8#$5<_kVq9du}?E)gT$*JKWG=60?d$9)J~NEE-RD2Lq`K@ zami{}vNgAE{CV$KZ(Dz`QNPk4c35m6=?=|8ONux#3jb$+@|O`LV`=on{XHouA_lnS z3zAcMI7=)N1m(Z|-U{`b>YYv>t0dbo1$^)~IyHs_unuIfQEt=|RBw%G?SC$X z<>J5N&$TDwe4+O@aEtU|a&j^}Do*CcgJy$So;Z+LwzDsW>hLHT?`Y$7oH=NhoSO~o z7XCejV*y&l1O^9{Eu?@Lun~#8ooL_r^Miw0rf|62V zJV}E8hc=@o10HG#z1X{(i~J@pGC>EOxHqK%G9NxPgWn4Tuu%_#^n^xzl7z6~hm=v- z{cJ1I((QLi?H_!lHrY6GJABGb3)(GbuTCgc=gYJNVy zX<1S>%O?GamlZ;^I6agg;kySQjFqT*U5eAz;C}~LL?GKN4}1*dzB*S+*baT+QD; zG5o8Mvk*6*s0&q*4nkU=!Renu0z&^{XYJ_b#Lf_8jp>0tBz`X;BOg&3j=o zID51&Y7WwK$6JUWDG&tXam;*Y+Q?4v)6g0tGf@TR>LBO*`N0x6x6c3rY!V;@aD_n) zran16Sa5Z>z+7rM8TW{hnoy*C07?6d!R4*JV&~5`aM0*jY`iR>62yA?old(AKV-%V zn1ctqBrnQGl|S&fE{;U{KT~FjRzlss*?~;@JsT zjLUU_co)O>Uoye@k3}y)3sQ7>qWuKUh}?3~NI!E)HwJ#o*qa0J4mY5-7CKtV_U0(Y zHZe-T8}z(V*CIs3%J?UX5NoxNtj=gOCNnKLO6z4{Tv3n`TcwTF7Ly?9=_PzBY9uH* z^ib8ON;Fe0a-MwHnW~ZHH1OH8iO{v>#7AH04BMBc$H&K*AV%>zC%TEnZ2L+8U;Q{}vgjyu zzK=C)YRQn0n8-oNs3uJbV<=34(ql+rB>;XpKt}R3-mP^ORXJ^WPr%>i)zfg#gTXat zPA}UEDsI~1p8VzJm2=z71piD88KP#k6+RME*+kf!*jynv#P^k>N;iR_~1R*0ezx`BJrcOMyd|OpO<0 z6edRt%l(!D%?TRl-J{Yc80rpC-5M02b@Qvi>^PWI3;OO6M`xH_(iL5wF=j-!*+8O? zQ~Q3}V@&bAX^0G9q2>Jq2>$*c_WbYsLxgYD@1VgYkKi-?2g%|R4d);FlVJSp_<12T zCNRWI0&r}k3d8-R^i$4<8cLr({t7Z`uwh0DJnVp@Kn5qdNH1tQ2Ck40U@y9rFI!g1 zuK zKWzA5ASTPM+XCt>SZ_9UeT|o!oV<%B>V^sweEUYv!lL`un_=@}v&*a+aZq{jG?k>2 z(Ilm=AY57sPXZW2zjvP0ALNqoP0i(}QTPY|B+ie27od7i9hmmt3O4R{y6-K{o_y|jt1fE)1H@!`49L1czmW^J-ju}fW za{KUb;3m3yvF#c5Ejk)|41WO&?#8x;1rPmU@PG%5+-o6);ilY7zNy#meE+_QV?|4u zHOCTZ%m^OYaTib@8wL?ZmXagBLXk?OeF1a-BtqQU)^v}C*cwWYT3~+<^RH&&;8oeR z&aXK>K#_XmUav0B?Sc-ER=_LIH^GBH?(wTxAbRU_Q#!Qz_HbKioml*A^0^_nW335_ zFkBDSF6;&fy@4h&U^|w!-896XkAF=B`S8f~gW=j9rLMD~lh`m<9V72hv~bJJ=Je{@ zs!}d^c9gG|bv4z_#b8>&)BbVRIy7Qk9v74YPMrTF;L10!rUK zCIgA*ajhPJ6)HIAFv8!o^isWPA@Mp&)QR4=4%1yL1alVY^ia||Tbs_Adym%Y(HOCI z=Pss8#%8ePJI;ZUhS7I_ovm#3aRndY0{$%u#OiNrh_eGPT(g=x_5_@3bc5mDtyeRW zvGr57KrSt#@FGnPI>4f$vpuvggQxLGGOHJR0SwmY995)}O>9fp5w}C)Tw507C_eoL z0uN%_BY#}C&vWQik(u*BXz72)r4zr~g@Os=(X-jd^hs)P)SVQ^!M68=3~SO4*zny= zP_6?Gy;TiNnhmZE9Dhc@EuIq?13fT`7J!|Dz=z6ydf+3~O{hPYpR%Ob9D3F&{dKkc zcZ<%|XK@!jMBIivDe4C0&b$EMmvCMn54#<2v_Z4_=wZjZbbjwajmv7~`;vzAGnnML zf^{S2IpC$XfTaF9f5eacQ6z|tP~bymyR`6po@xxhx_;a-YfHDhNA-f!lhS(I+;0Y@ zqi!i+3*y|e_&oy+oF4w~mNL`>ND=A69k0-v7N-Q(j~AqOGfbI_-&FAc`~@N@Cr}C~ zVrbiSL%uk3f3IYU*usPoV2rV{I~CZZ{6D2!c{r5q+kR%oScdFtWSuB$O2*#ASSAv( zZ;6T)OZFwqDBehteI3zELbg{Jgh5fVMaVw3WGCAoe2?GvzQ_0d`yJmL^Vi(hbIm>X zeLd&(%z0hsjeb&r81R>}yKrNAT~tz8Z;4*4wI2BFw%G$iL#N=Vg`w*ujV1QIgtpg> z+59h-;i6}*X-i|o!0zB?664C_bFN&ey{2O|V|#*7K!qbdHWDPMW!N=Xce6iv(1w`M zelr_;uiR9_%&%oJ8t8%jI?a_Goco-m6RT~4%v-z4`opH&aII6qEFZzI1vL#AGU4i{ zxuEg&NG_jen>**E+=J@(_6d{h09Y%)F`{0PcqE&W*+GCh{AdTh(NYv_2 zg1wVoPbLNH21Q2yuKu3{8cQX%cm!F-E^tJ0jJ=NMZ9A2{*;@Lm6i}(+L(k`$y*w8L zsteR8R%2^HWfh51pkYVZlSF3KNc3xBMiq2f67PRyqW`2Z@}j>)&RfJ3=+_#Q-YaW@%g@=to-UyX{?ixnXkHj@h_M`f=dX5 z5nL6()Y=8&WP;kRoIWU;a(a$i1;PRTtp=Fx=`4POskndRt}q7IcBy}`zdrBWL2Doq zL&?J3tB&AURU>2KiBt^wJQSR9K$yOurDi-oM-gmbX?>bha}lg(aNxKgUl_qg+YHx? z@;?n2quO)y>uO`NztW;72C3*st-+k@G^!(Ti%u3`M0-V3$BtrJQ=+5E2P_9GC#{z) z*G7d(5Tc4;MwS3KFFY~(Rx5Mr$5*s3$PeB&vcXD~&BO{@Dwv^@R5xqro;Sn5#bG2{ zCL5oT>v~dtu*^R)5eH)41}dcdK|Y)AX~>d>5G8j3C>%p*+zgzlYbkabzQWeJ4a&+9 z^GV>{(7Yz~MACET+;~1ra$=w9+Wy#)UEph)<1C^g?22kdReKMyJa4#U_yO!6^ps^eSg$QToN8@_Ie(?uDpRXb z-yTW=p9j>K5NwaM_5L^XX`{H;HY62R_Il3>2#BkF96^aPpNSJG_Ni3S=8Et911>LKrdP#j_ilvW#O_rzy3h*W?}aJO3)@TJSQPTC<7y& z)HZ!NXqN*dEd*q&WLu6Z14{QhML;8lTc9G@xSKn^j=o}lvEVFE1rVBX-u~j3=^l$lR@Gbl z`BzmnF>g)9BHkW*`$%oDX;7~@JFnEf5_R?}%e}2`+b#F+ZxvaDRL*$t+rjd)0@}IL zL%g{pc1kB!0^5Y+r+-Ip-Iy^LdXTcc{ex{yM`tE)_%-dMY8O4 zO7~hfZav>*YKc1WLNM>fQw{SvS-|X$+mUQQw`@Yu>xoD5%#G<5x5)KJ$>IllD?BKS z;jz(z8-LHyVyw%_n(3^c#6CvxM0`+R=I(;2|H1Xz&7MSGMBzhT;H=*_GIT@XOs`2x zIHX2)RJA_cGuCggv3D-JGjlpB5QPygbnu57m8ZYn*c_8+*$wc#{dK=`OX=Hi(jJOOrJ90yR(~W}uv9Zp-XAP&L zYy`#m`sJAc#Ruq=+Y=tMDR(>+w}b6y*6&6$I^a&fl4pQ;&}@#!VpRt(Qkv4Ibk~X^@Ai(k9qEL|oLip`4hrsc(uF1aa$ZScE=)+0 z_k^*X&VG^rRyeWq-poBO!2tpsha|PxQLZHzYxjetzJ%UsTWU5j(ZsI|h$s36vZUqs zauy2n0tx0v%D^1QMzM51A2Wb0^jw8q#}6hNWBNbop<_Pn&`5;?C%}rCks61Eh%10B z(DH-!;o(@RyoDJS9I`(Lg}+OiDRoqViDI{A6`hc*hr^(l64+DS}LMc_*oy zpk-Ax-VQ%f_T_~?_|$^zC!E6Q?~UvDmc6Jys2q_6JqPR9ru$k1|aO`9dNE zgVm_BaYnsN278Z2>CRxy5H^58LXtK(ZzL%mbb~z$9;o&I`Pf9Km+6rc`#BC32tR}c zGK@=6xy;=EyANw2JpnkVJ4gP4s^P9uCh+|fGbhC|EswB-cBwC7f1gN$WHAU?#W63{ z=)V!VNvb`L`{Fo)ir7hfn8+VNL>AQku<1ySVFj`xAvM1iqBbyUAyOE;<4% zu7pylWhQ%z_M1b?4K(w{NObPTtR|~Q{UUhjkrZU-8`~X#4tinHpB{(ZF2Ny$l!#1# zG`@Ma-OD&c>!l&A5hj0SYAT`K4zyaKlWt(o@x(1Qd^ex}dgbE$@byeLqdRp*tTX{$ zh?#i%R^=tGv}@YWqe`?$(FJXizs)83v#Ok<T`uvEVdc`!NQ`nm0%<2PGny4xSJggps*T;YVRM zydCmtG{d@r0>zeyA>Hl8RO^5>-n^*GE2GKM$j$0dd7km*quhi2+ctqV%#Up~$I*Kl z+d~)jSWjEi#UdB@L<^wW@(>oudz+@^JAW=I1slMa@9>@aLjndGt)^ntt0gOidM+%agF5uYwI0t?<}t!(Dpv&m_s8H%y47p+_W9TZBNDpoM5Ae$H|6PDp^RLXK4M zxgc_$RkGQc?{A0nzK=96Er*KT`+Z@WrZGqu{uo~$x{%s_`yk|WL*rU#SpEBF#o6Vo zCx%bi;bH55Siw7O9>C`*>j9(u1Q5FO*=ucFRc|H7rFo5BQskRkqDVo6np%i8t=XTq zbf{_LXz9+F-PnhXRRUR`Y3B~BSIAJFA;J=nmFg)7(`W5cyl;e0)K~H{u}jH=)tgsV z`EReazu|mQGT!81s1~%o<+KR@isRCTCvM&q(;E!Mg@1Z(;fBl1SN2(t{xP}{7#d**d6*{++|ACkC(`0^QZ95bvph(e4X)w;X(PSJSZa7!{Z(#FME2Mq0Ga*7yc>)+cS;dj z(L@6~U&*7w{v*j(+)R_Xa=3wsru)h|q1RoQ_0Vi6(%wnLXmdEO0!Yv*m80ZR_J~|B z7aW#gb(iii_ngQQI`@X?TO%BZoJSIs80$YZa0K%53#gP3_jdT4xY_IeDkD0`w5j|5 zbGsWBUOPp32#QJz)4bo01_`8L-wTOi>v~UgP?~NOzKst7v^*|;lO&WTooyiQ^}y^| zMsvV<4JQ==I5z>R1y!m2LZ4_sl^<-P+3G0?lT-l!fx>~1G$?obBROp4v?g_t5{i`) zCs~kAF0;XeDb+BfZrwq*}T16YH;@8=hf8rs#%REs3~6=2c-!e{tE8OM7%ek`~9P